3

我想这是一件容易的事,但我无法通过谷歌找到我正在寻找的信息。我有popupProperties这只是默认的东西。然后我调用根据弹出窗口返回特定覆盖的服务。如何遍历所有服务的覆盖并将它们应用于popupProperties

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

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

2 回答 2

13

You should have a look at the solution of Josh David Miller which uses the extend method of angular (documentation).

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'
}

The values are copied in the defaults variable. There is no need of using the return value (var props =).

于 2013-04-11T03:39:27.647 回答
1

我想您的意思是这两个函数都返回具有许多属性的对象(而不是数组)。

如果是这样,以下应该可以工作 - 只是 JavaScript,没有特定的 AngularJS:

for (var attrname in obj2) { obj1[attrname] = obj2[attrname]; }

有关更多详细信息,请参阅此问题如何动态合并两个 JavaScript 对象的属性?

于 2013-04-10T21:38:21.367 回答