2013-04-10 35 views
3

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

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

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

你的意思是['angular.extend'](http://docs.angularjs.org/api/angular.extend)?例如'angular.extend(popupProperties,popupOverrides)' – 2013-04-10 21:50:04

回答

13

你应该看看乔希戴维·米勒的解决这个问题它使用角度的扩展方法(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' 
} 

将值复制到默认变量中。不需要使用返回值(var props =)。

1

我认为你的意思是你的意思是两个函数都返回具有多个属性(而不是数组)的对象。

如果是这样,下面应该工作 - 只是JavaScript的,没有什么AngularJS具体:

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

详情参见How can I merge properties of two JavaScript objects dynamically?

+0

谢谢,我会给它一个镜头。 – 2013-04-10 21:39:34

+0

这确实奏效,但它并不是做这件事的“角色”方式。 +1的工作答案,但。 – 2013-04-11 17:50:27