嘿,我正在尝试在我的 Angular 应用程序中更新具有子属性的对象。
对象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?
我正在循环并匹配属性。但我需要用对象 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 );
}
}
}
}
}
});
最佳答案
看看这个:http://davidcai.github.io/blog/posts/copy-vs-extend-vs-merge/
就你的情况而言,我认为 angular.merge 是最合适的:
angular.merge($scope.osbStep, currentPage);
PS:如果您愿意,我认为您也可以使用 jQuery 扩展方法(对于大对象应该更快一点)
关于javascript - 在 for in 循环中更新对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37992928/