2016-10-23 88 views
0

如何使對象屬性的綁定工作。例如,在我的控制,我有:對象屬性中的角度綁定

$scope.reviews = { 
    rating_summary: 4, 
    items: [ { title: 'A Title'}, etc... ] 
} 

在我看來:

<li ng-repeat="review in reviews.items"> 

現在,每當我改變審查變量在控制器中,沒有更新:

$scope.reviews = [new updated reviews] 

可能是因爲角正在監聽$ scope.reviews的舊引用的更改。

有兩種解決方案的結合工作,但兩者都不是很聰明:

  1. 連接的項目,以直接的範圍,所以這將是$scope.items = $scope.reviews.items,現在,只要項目被改變,他們將更新。
  2. 用戶angular.copy保持目標引用,所以angular.copy({items: []}, $scope.reviews);

是否有任何其他的解決方案比上述要做到這一點其他的。

+0

它應該像#scope.reviews = []新更新的評論] ...問題應別在別的地方......並且可以創建一個演示文稿... –

+0

如果scope.reviews是一個數組,但它是一個對象,並且該數組是對象鍵之一,即$ scope.reviews = {rating_summary:5,items:[item1,item2,..]} –

+0

查看我的示例:https://jsfiddle.net/or66quta/ –

回答

1

它應該工作,必須有一些錯誤,而更新對象/項目 請參閱本Plunker

$scope.reviews = { 
    rating_summary: 4, 
    items: [ { title: 'A Title'}, { title: 'B Title'} ] 
    }; 

    $scope.changeItems = function(){ 
    $scope.reviews.items = [ { title: 'A Title'}, { title: 'B Title'}, 
          { title: 'C Title'}]; 
    }; 

    $scope.changeObject = function(){ 
    $scope.reviews = { 
    rating_summary: 4, 
    items: [ { title: 'A Title'}, { title: 'B Title'}, { title: 'D Title'} ] 
    }; 
+0

它實際上工作,我有代碼的其他部分的問題,對不起 –