我想这是一件容易的事,但我无法通过谷歌找到我想要的信息。我有popupProperties
这只是默认的东西。然后我调用返回特定覆盖的服务,具体取决于弹出窗口。如何迭代所有服务的覆盖并将其应用于popupProperties
?
var popupProperties = getDefaultPopupProperties();
var popupOverrides= popupService.getPopupOverrides(currPopupId);
angular.forEach(popupOverrides, function(popupProperty, propertyName){
//replace defaults with popupData's properties
});
答案 0 :(得分:13)
你应该看看 Josh David Miller 的解决方案,它使用angular(documentation)的extend方法。
var defaults = {name:'John',age:17,weight:55};
var overrides = {name:'Jack',age:28,color:'brown'};
var props = angular.extend(defaults, overrides);
// result
props: {
name:'Jack',
age:28,
weight:55,
color:'brown'
}
将值复制到defaults变量中。不需要使用返回值(var props =)。
答案 1 :(得分:1)
我认为你的意思是两个函数都返回具有许多属性的对象(而不是数组)。
如果是这样,以下应该可以工作 - 只是JavaScript,没有特定的AngularJS:
for (var attrname in obj2) { obj1[attrname] = obj2[attrname]; }
有关详细信息,请参阅此问题How can I merge properties of two JavaScript objects dynamically?