嘿我正在尝试在我的角度应用程序中更新具有子属性的对象。
对象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 );
}
}
}
}
}
});
答案 0 :(得分:1)
看看这个:http://davidcai.github.io/blog/posts/copy-vs-extend-vs-merge/
在你的情况下,我认为angular.merge是最合适的:
angular.merge($scope.osbStep, currentPage);
PS:如果您愿意,我认为您也可以使用jQuery扩展方法(对于大对象应该更快一些)