从ng-model中删除元素

时间:2015-11-10 20:11:12

标签: javascript angularjs

所以,我有一个托管selectedFields列表的根对象。通过从填充列表中选择复选框来填充它。

<input type="checkbox" ng-model="root[activeSource].selectedFields[item]" ng-value="item"> {{item}}

Root是主要对象,activeSource是当前关注的索引。现在,这很好用,它会在列表中添加字段。

但是,如果我返回到字段列表并取消选中它们,则不会将其从我的对象中删除。为什么模型添加索引,但在取消选中时不会删除它们?

这是根对象:

$scope.root[value.title] = {
    "description" : value.description,
    "root" : value,
    "selectedFields" : {},
    "weight" : 0,
    "fields" : "",
    "selectedFieldsLength" : function(obj) {
        return Object.keys(obj).length;
    }
};

2 个答案:

答案 0 :(得分:1)

它将值设置为true / false,它不能仅使用ng-model和checkbox删除条目。如果需要,请使用方法设置和删除

OP编辑:ng-change添加到功能。 (我写了代码,但是这个答案帮助我写了它,所以给予它应有的信用)

//method to remove unchecked fields from active sources selected fields list
$scope.setObjectList = function() {
    //iterate fields, check for a value of false (set by model), remove if false
    angular.forEach($scope.root[$scope.activeSource].selectedFields, function(key, value) {
        console.log(key,value)
        if (key === false) {
            delete $scope.root[$scope.activeSource].selectedFields[value];
        }
    });
}

答案 1 :(得分:0)

也许这可以帮到你:

<input type="checkbox"
       ng-model="string"
       [name="string"]
       [ng-true-value="expression"]
       [ng-false-value="expression"]
       [ng-change="string"]>