【问题标题】:Update array object after custom filter自定义过滤器后更新数组对象
【发布时间】:2018-03-21 13:48:04
【问题描述】:

我有一个自定义过滤器,用于聚合在 ng-repeat 块中使用的 $scope 对象。 我的代码如下所示:

  $scope.myobj = isSelected ? $filter('customFilter')($scope.origObj) : $scope.origObj

在上面的代码中,$scope.myobj 是我在 ng-repeat 中使用的,所以如果 isselected 标志为真,则原始对象将被过滤并返回到 $scope.myobj 中,否则我们只是按原样返回原始对象. 但是,我对过滤数组中的任何对象所做的任何更改都不会在原始数组中得到更新,这是可以理解的,因为它们是不同的对象。

当过滤器未激活时,如何确保这些更改反映在原始数组中? 我有一个解决方法是在更新(服务器请求)之后刷新视图,但我想知道是否有更好的方法,因为我只想更新我正在编辑的当前行而不是完全刷新。

【问题讨论】:

  • 你可以为你的代码做一个最小的工作示例吗?

标签: javascript angularjs angularjs-directive angularjs-scope


【解决方案1】:

更好的方法是创建一个自定义过滤器,该过滤器将接受一个参数并在ng-repeat 中使用它。

.filter('myFilter', function(){
return function(inputArr, isSelected){
    var outputArr = [];
    if(isSelected){
        outputArr = inputArr.filter(function(obj){return obj.active === true});
    }
    else{
        outputArr = inputArr;
    }
    return outputArr;
}
})

工作JSFiddle link。希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 2016-07-15
    • 1970-01-01
    • 2019-12-13
    • 1970-01-01
    • 2018-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多