2013-09-16 67 views
0

我有一個視圖模板,其model是一個服務的屬性,在一個指令的控制器中設置。當服務的屬性更新時,它不會在視圖中更新。Angularjs查看服務

<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就好像它是一個引用,而不是文字?

+1

你可以編輯你的問題,並把一些代碼來理解你的問題:)? –

+0

會做,但不知道它會有幫助。 – LeeGee

回答

1

您的$scope.xMyService.x都應該在任何給定的時間指向相同的數組。最好的方法是使用[]在服務中初始化陣列。

之後總是對pushslice操作添加和刪除數組中的元素。

當綁定設置在不同的陣列上並且服務指向不同的陣列時,可能會出現此問題。

+0

非常感謝您的快速響應。我應該多睡一會兒! ' this.x.length = 0; newValues.forEach( function(i){this.Push(i) },this); ' – LeeGee