覆盖angular forEach中的属性

时间:2013-04-10 21:26:29

标签: angularjs

我想这是一件容易的事,但我无法通过谷歌找到我想要的信息。我有popupProperties这只是默认的东西。然后我调用返回特定覆盖的服务,具体取决于弹出窗口。如何迭代所有服务的覆盖并将其应用于popupProperties

var popupProperties = getDefaultPopupProperties();
var popupOverrides= popupService.getPopupOverrides(currPopupId);

angular.forEach(popupOverrides, function(popupProperty, propertyName){
    //replace defaults with popupData's properties
});

2 个答案:

答案 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?