在1.3.0-beta.15上运行的角度应用程序中,我有一个如下所示的指令:
.directive('digester', function() {
return {
scope: {
object: '=',
digestTrigger: '='
},
templateUrl: 'some-template.html,
link: function(scope) {
scope.digestTrigger = function() {
scope.$digest();
}
}
};
});
一个看起来像这样的模板:
<div>{{object.title}}</div>
某处看起来像这样的服务:
.service('serviceToCallDigest', function() {
return {
object: {
title: 'someTitle'
},
digestTrigger: function() {},
someFunction: function() {
this.object.title = 'newTitle';
this.digestTrigger();
}
};
});
和一个获取服务的控制器如下:
.controller('someCtrl', function($scope, serviceToCallDigest) {
$scope.serviceToCallDigest = serviceToCallDigest;
}
并将指令连接起来:
<digester
digest-trigger="serviceToCallDigest.digestTrigger"
object="serviceToCallDigest.object">
</digester>
这里发生的事情是,当指令获得digestTrigger
注入(作为空函数)时,它设置函数以触发指令本地$digest()
函数,并通过指令外部的启动代码在适当的时候触发本地摘要。
我知道$apply()
被建议使用,它会$digest()
级$rootscope
,但我处于性能危急状态,我需要在本地更新指令。
此设置一直运行正常,直到升级到1.3.0-beta.16或更新版本。现在,当调用object.title
时,新的someFunction
不会传递给指令并在视图中更新。
有谁知道为什么会这样,以及如何解决这个问题?