2016-06-23 3 views
0

ちょっと、角のあるアプリケーション内で子プロパティを持つオブジェクトを更新しようとしています。forループ内のオブジェクトを更新します。

オブジェクト1:

$scope.osbStep = { 
       test0Nav : { 
        current : false, 
        complete : false, 
        hidden : false 
       },test1Nav : { 
         current : false, 
         complete : false, 
         hidden : false 
       },test2Nav : { 
         current : false, 
         complete : false, 
         hidden : false 
        }, 
      }; 

$放送オブジェクト2:

var currentPage = { test0Nav : { current : true }}; 
$rootScope.$broadcast('step:set', currentPage); 

どのように私は、オブジェクト2とオブジェクト1を更新することができますか?

私はループしてプロパティを照合しています。 BuTオブジェクト1のデータをオブジェクト2のデータで更新する必要があります。私のログは文字列を返すだけです。

$scope.$on('step:set', function(event, currentStepData){ 

        for (var key in currentStepData) { 
         if(currentStepData.hasOwnProperty(key)) { 
          var currentKey = key; 
          for (var foo in $scope.osbStep) { 
           if($scope.osbStep.hasOwnProperty(foo)) { 

            if (currentKey === foo){ 

             console.log('foo ', foo); 
             console.log('currentKey 'currentKey); 

            } 


           } 
          } 
         } 
        } 

       }); 
+0

ループ内で正しい値を取得していますか? – adolfosrs

答えて

1

はこれを見ている:あなたのケースではhttp://davidcai.github.io/blog/posts/copy-vs-extend-vs-merge/

を、私はangular.mergeが最も適切だと思う:

angular.merge($scope.osbStep, currentPage); 

PS:あなたが希望する場合、私はあなたが使うことができると思いますjQueryもメソッドを拡張します(大きなオブジェクトの場合は少し速いはずです)

+0

マージは正常に機能しました! – user2668392

関連する問題