2017-04-10 73 views
0

你好家伙我试图清除我的ng模型,当我启动我的更改功能,但我的问题是我不想删除所有我想排除对象中的一个项目。不包括对象角度ng变化

function change() { 
      if (vm.location.type) { 
       angular.forEach(vm.location, function (value, index) { 
        delete vm.location; 

       }); 

      } 

     } 

,所以我不想删除

vm.location.type 

vm.location 

   vm.location.boundaries; 
       vm.location.region; 
       vm.location.address; 
       vm.location.name; 
       vm.location.nonVisitingRadius; 
       vm.location.visitingRadius; 
+0

我不确定,你正在尝试,但如果你想从对象中删除一个键,然后尝试像这样:'vm.location.region;' –

+0

我想要做的是我想删除所有vm.location,但我不想删除vm.location.type,因为我仍然需要它 –

回答

0

我不知道我是否正确理解你所问的内容,但是如果你想清除对象的所有字段,只保留类型并用普通的javascirpt(没有库)保留对象的引用,则循环字段并检查i字段是否与类型相同。

for(var i in model.location){ 
if(i !== 'type') 
    delete model[i]; 
} 

与underscore.js你可以定义诸如默认模型:

var defaultModel = { 
location: { 
    region: '', 
    address: '', 
    name: '', 
    nonVisitingRadius: '', 
    visitingRadius: '', 
    type: 'defaultvalue' 
} 
} 

,当NG-变化触发的函数内部

_.extend(model, defaultModel); 

将保持默认值键入并清除所有其他。

+0

感谢的人,我也做你说什么,它在工作。 for(var i in vm.location){ if(i!=='type') delete vm.location [i]; } –

+0

不客气:) – Karim

1

请参见下面的代码,

var obj = { a:123, b:123, c:123 } 
delete obj.a; 

因此物镜会是这样{B:123,C:123}

注:不需要任何for循环来从对象中删除属性

更新回答:

var obj= { 
    a: 'aaa', 
    b: 'bbb', 
    c: 'ccc', 
    d: 'ddd' 
}; 

var removeObj = function(obj, props) { 

    for(var i = 0; i < props.length; i++) { 
     if(obj.hasOwnProperty(props[i])) { 
      delete obj[props[i]]; 
     } 
    } 

}; 

removeObj (obj, ["a", "d"]); 
+0

我明白这一点,但如果我的obj有大量的项目里面我会写90行删除。 –

+0

@HeshamElMasry您使用在您的项目lodash,如果这样的话u可以使用_.emit(OBJ,[“一”,“B”]) – Srigar

+0

看到我更新的答案,如果它的工作原理接受 – Srigar

0

您可以使用临时对象执行此操作:

let tempLocation = {}; 
tempLocation.type = $scope.location.type; 
$scope.location = tempLocation;