【问题标题】:Inject $scope into filter (AngularJS)将 $scope 注入过滤器(AngularJS)
【发布时间】:2014-03-02 05:27:40
【问题描述】:

我正在尝试做的事情:

我在要过滤的关联数组上使用 ng-repeat 指令。内置角度过滤器不适用于关联数组/哈希。因此,我正在尝试编写自己的过滤器(灵感来自http://angularjs.de/artikel/angularjs-ng-repeat;它是德语,但重要的代码位于标题“Beispiel 2:Filtern von Hashes mittels eigenem Filter”下方,意思是“示例 2:过滤器使用您自己的过滤器进行散列")。

ng 重复:

tr ng-repeat="(key, machine) in machines | customFilter | orderObjectBy:'name':false"

注意:orderObjectBy 也是一个 customFilter。

过滤器:

toolApp.filter('customFilter', [function(){
    return function(machines){
        var result = {};

        angular.forEach(machines, function(machine, key){
            /*if(machine.name.contains(filter)){
                result[key] = machine;
            }*/
            //if(machine.name.contains("a")){
                result[key] = machine;
            //}
        });
        return result;
    };
}]);

过滤器使用硬编码的“过滤器标准”。但我想在列表上方有一个文本框,用户可以在其中输入“过滤器标准”。 我的问题是,我不知道如何将此值插入过滤器。我在 Internet 上找不到很多东西,而且我发现的东西对我没有用。

有谁知道如何插入值或其他方法。

非常感谢您的每一个回答!如果您需要更多信息,请告诉我!我尽量保持简短:>。

来自德国的问候

【问题讨论】:

    标签: angularjs angularjs-scope inject angularjs-filter


    【解决方案1】:

    您可能有自定义过滤器的参数。

    假设您有一个输入字段:

    <input ng-model="myParam">
    

    还有一个像你这样的 ng-repeat:

    <tr ng-repeat="(key, machine) in machines | customFilter:myParam | orderObjectBy:'name':false" >
    

    那么您可以在自定义过滤器中访问此参数:

    toolApp.filter('customFilter', [function(){
        return function(machines, myParam){
            var result = {};
    
            angular.forEach(machines, function(machine, key){
                if(machine.name.contains(myParam)){
                    result[key] = machine;
                }
            });
            return result;
        };
    }]);
    

    注意: 请注意,myParam 值是使用“未定义”值初始化的。您必须在控制器中设置默认值或在 customFilter 中处理它。否则,您只会在开始输入后才能看到您的列表。

    【讨论】:

      猜你喜欢
      • 2016-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-15
      • 1970-01-01
      • 1970-01-01
      • 2014-01-30
      • 2015-04-02
      相关资源
      最近更新 更多