2016-10-23 7 views
0

개체 속성에 대한 바인딩 작업을 어떻게 만들 수 있습니까?개체 속성의 각도 바인딩

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

을 그리고 내보기에 : 내 컨트롤러의 예를 들어 내가 가진 지금

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

, 내가 컨트롤러에 대한 리뷰 변수를 변경할 때마다 아무것도 업데이트되지 않은 :

$scope.reviews = [new updated reviews] 

아마도 beacause 앵귤러는 $ scope.reviews의 이전 참조에 대한 변경 사항을 듣고 있습니다.

는 두 가지 해결책이 있습니다에 대한 작업을 결합하지만, 둘 다 매우 영리하지 :

  1. 직접 범위에 대한 항목을 첨부, 그래서 $scope.items = $scope.reviews.items, 항목이 변경 될 때마다 이제 그들은 될 것 업데이트되었습니다.
  2. 사용자 대상의 참조를 유지하는 angular.copy, 그래서 angular.copy({items: []}, $scope.reviews);

위보다이 다른 작업을 수행 할 수있는 다른 솔루션이 있습니다.

+0

이] ... 문제는해야 다른 어딘가에 ... 그리고 유치원을위한 플 런커를 만들 수 ... –

+0

scope.reviews가 배열이지만 객체이고 배열이 객체 키 중 하나 인 경우 $ scope.reviews = {rating_summary : 5, items : [item1, item2, ..]} –

+0

내 예를 확인하십시오. https://jsfiddle.net/or66quta/ –

답변

1
그것은 개체/항목을 업데이트하는 동안 약간의 실수가 있어야 작동합니다

참조하십시오 그것은 # scope.reviews = [] 새로운 업데이트 리뷰처럼 작동한다 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

그것은 실제로 작동합니다. 코드의 다른 부분에 문제가있었습니다. 미안합니다. –