0
我有一个指令到我传递是动态生成的对象:深手表属性传递给一个指令
<my-directive passed-value="ctrl.buildValue()"></my-directive>
angular
.module('myModule')
.directive('myDirective', function() {
return {
restrict: 'E',
scope: {
passedValue: '='
},
controllerAs: 'ctrl',
bindToController: true,
templateUrl: 'templates/my-directive.html',
controller: function() {
var that = this;
}
};
}]);
假设对象始终是一个新的对象,但对象属性不会改变,例如:
myController.buildValue = function() {
return {someValue: 'abcd'}
};
然后角度进入无限循环,因为(我认为)返回的对象始终是一个新的对象。
那么我怎么能要求角度考虑对象没有改变,如果它的属性是相同的,即使对象是新的?
这应该是可能的,因为我知道当我深入观察一个物体时(使用$watch(..., true)
),角度认为如果物体的属性相同,即使物体始终是新物体,它也是相同的。
的'$ watch'作为和可选参数'objectEquality '你可以设置为'true',它使用'angular.equals'而不是引用,[$ rootScope.Scope](https://docs.angularjs.org/api/ng/type/$rootScope.Scope)。这可能会帮助你 – taguenizy