【发布时间】:2014-05-09 12:54:07
【问题描述】:
似乎 ngRepeat 在更改其中一个后触发了任何列表项上的监视。我已经在使用 track by 所以这似乎没有帮助。
这是我的模板:
div(ng-repeat="poll in polls track by poll._id")
poll(poll="poll")
.poll
.title(ng-if="!poll.closed") {{poll.title}}
.btn(ng-click="poll.closed = true") Change poll
{{someExpensiveComputation(poll._id)}}
javascript:
.directive('poll', function($rootScope, $modal) {
return {
replace: false,
restrict: 'E',
scope: {
poll: '='
},
templateUrl: '/tmpl/poll',
link: function($scope, elem, attrs) {
$scope.someExpensiveComputation = function (id) { ... }
}
}
});
似乎每当更改投票项目时, someExpensiveComputation 函数都会针对所有投票运行,并且每次运行 3 次。我怎样才能让它不这样做?它应该只触发该指令的观察者。我认为这应该是可能的。
谢谢。
【问题讨论】:
-
民意调查有何变化?谁改的?
-
@ExpertSystem 嗨,谢谢。我用投票编辑的例子编辑了这个问题。
标签: javascript angularjs angularjs-directive