【问题标题】:excluding from an object angular ng-change从对象角度 ng-change 中排除
【发布时间】:2017-09-05 11:28:53
【问题描述】:

大家好,我正在尝试在启动更改功能时清除我的 ng-model,但我的问题是我不想删除所有我想排除对象中的一项。

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;

【问题讨论】:

  • 我不确定,你在尝试什么,但如果你想从对象中删除一个键,那么试试这样:vm.location.region;
  • 我想做的是我想删除所有 vm.location 但我不想删除 vm.location.type 因为我仍然需要它

标签: angularjs angular-ngmodel angularjs-ng-change


【解决方案1】:

我不知道我是否正确理解了您的要求,但是如果您想清除对象的所有字段,仅保留类型并使用纯 javascirpt(无库)保留对象的引用,请循环字段并检查 i 字段是否等于 type。

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-change 时

_.extend(model, defaultModel);

这将保留类型的默认值并清除所有其他值。

【讨论】:

  • 谢谢你,我已经按照你说的做了,它正在工作。 for(var i in vm.location){ if(i !== 'type') delete vm.location[i]; }
【解决方案2】:

请看下面的代码,

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

因此 obj 将是这样的 {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"]);

【讨论】:

  • 我明白这一点,但如果我的 obj 里面有大量项目我会写 90 行删除。
  • @HeshamElMasry 你在你的项目中使用 lodash,如果是,那么你可以使用 _.emit(obj, ['a','b'])
【解决方案3】:

你可以用一个临时对象来做​​到这一点:

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

【讨论】:

    猜你喜欢
    • 2014-12-14
    • 2017-07-14
    • 2016-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多