for in循环中的更新对象

时间:2016-06-23 13:22:25

标签: javascript angularjs

嘿我正在尝试在我的角度应用程序中更新具有子属性的对象。

对象1:

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

$ broadcast object 2:

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

如何使用对象2更新对象1?

我正在循环并匹配属性。我需要用对象2数据更新对象1。我的日志只返回字符串。

$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 );

                                    }


                                }
                            }
                        }
                    }

                });

1 个答案:

答案 0 :(得分:1)

看看这个:http://davidcai.github.io/blog/posts/copy-vs-extend-vs-merge/

在你的情况下,我认为angular.merge是最合适的:

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

PS:如果您愿意,我认为您也可以使用jQuery扩展方法(对于大对象应该更快一些)