我们尝试过angular.copy和angular.extend。但是,这两个都复制属性值。我们如何将一个对象的属性(不带它们的值)复制到另一个对象?使用Angular将对象属性(不含值)复制到另一个对象
这是fiddle,我们的尝试基于how-to-quickly-clear-a-javascript-object。
angular.module('App', []);
function Ctrl($scope) {
function copyNotValues(obj) {
var newObj = angular.copy(obj);
for (prop in newObj) {
if(newObj.hasOwnProperty(prop))
{
newObj[prop] = null;
}
};
return newObj;
}
$scope.master = {
foo: 'original foo',
bar: 'original bar'
};
$scope.copy = angular.copy($scope.master);
$scope.extend = angular.extend($scope.master);
$scope.copyNotValues = copyNotValues($scope.master);
}
感谢您的!我的方法是使用angular.copy(),遍历新对象,并将其每个属性设置为null。创建一个“主”对象可能对另一种情况有好处,因为我的兴趣对象来自REST调用并具有许多属性,所以创建主对象会导致大量代码重复。 –
@ShaunLuttin在我的ActionScript体验中,在服务器端和客户端复制对象是非常有意义的。但是由于JavaScript是一种松散类型的语言,因此开销可能没有意义。我很确定每个循环都会给你一个对象的所有属性;你应该能够将其封装到一个实用函数中,以便于重用。祝你好运! – JeffryHouser
伟大的提示!我们已经复制了服务器端和客户端上的对象。在服务器上,我们有一个绑定模型和一个视图模型。在客户端,我们有HTML模板中存在的ng模型。如果我们也要在ng控制器中复制模型,那么我们将有相同模型的四个表示形式!就像你提到的,三个似乎有足够的开销。 JavaScript for循环在我们投入到Angular服务中的效用函数中做了诀窍。谢谢你的鼓励! –