diff options
Diffstat (limited to 'src/ng/compile.js')
| -rw-r--r-- | src/ng/compile.js | 14 | 
1 files changed, 9 insertions, 5 deletions
| diff --git a/src/ng/compile.js b/src/ng/compile.js index 7d0bb008..a6bcc3e7 100644 --- a/src/ng/compile.js +++ b/src/ng/compile.js @@ -1400,7 +1400,7 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {                  optional = (match[2] == '?'),                  mode = match[1], // @, =, or &                  lastValue, -                parentGet, parentSet; +                parentGet, parentSet, compare;              isolateScope.$$isolateBindings[scopeName] = mode + attrName; @@ -1423,6 +1423,11 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {                    return;                  }                  parentGet = $parse(attrs[attrName]); +                if (parentGet.literal) { +                  compare = equals; +                } else { +                  compare = function(a,b) { return a === b; }; +                }                  parentSet = parentGet.assign || function() {                    // reset the change, or we will throw this exception on every $digest                    lastValue = isolateScope[scopeName] = parentGet(scope); @@ -1433,10 +1438,9 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {                  lastValue = isolateScope[scopeName] = parentGet(scope);                  isolateScope.$watch(function parentValueWatch() {                    var parentValue = parentGet(scope); - -                  if (parentValue !== isolateScope[scopeName]) { +                  if (!compare(parentValue, isolateScope[scopeName])) {                      // we are out of sync and need to copy -                    if (parentValue !== lastValue) { +                    if (!compare(parentValue, lastValue)) {                        // parent changed and it has precedence                        isolateScope[scopeName] = parentValue;                      } else { @@ -1445,7 +1449,7 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {                      }                    }                    return lastValue = parentValue; -                }); +                }, null, parentGet.literal);                  break;                case '&': | 
