2017-04-10 72 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;