我有一个视图模板,其model
是服务的属性,在指令的控制器中设置。更新服务的属性后,它不会在视图中更新。
<ul>
<li ng-repeat="i in x">
<item model=i></item>
</li>
app.directive('x', function($http, MyService){
return {
restrict: 'E',
replace: true,
templateUrl: "partials/list.html",
controller: function($scope, MyService){
$scope.x = MyService.x;
}
}
});
我可以让模型反映变化的唯一方法是指令的控制器是否具有服务更新属性 - 但是在调用控制器时,我还没有数据。
怎么办?我应该以某种方式明确地调用指令的控制器,还是打破那个控制器中的逻辑?两者似乎都没有角度。
我错过了部分难题,不是吗?如何将$scope.x
更新为MyService.x
,就好像它是一个参考,而不是文字?
答案 0 :(得分:1)
$scope.x
和MyService.x
都应该在任何给定时间指向同一个数组。最好的方法是使用[]
在服务中初始化一次数组。
之后总是向push
和slice
操作添加和删除数组中的元素。
当在不同的数组上设置绑定并且服务指向不同的数组时,可能会出现此问题。