javascript - AngularJS 类型错误

标签 javascript angularjs typeerror angular-filters

收到 TypeError: undefined is not a function 错误。 该代码旨在按列表包含的标签过滤列表。我的代码适用于单个标签,但现在查询是一个标签数组,它不起作用。

angular.module('myapp', [])
    .controller('myctrl', function($scope, $http) {
        $scope.formData = {};
        $scope.formData.query = "";    

        $scope.formData.list = [{"Tags":["a", "b", "c"]}, {"Tags":["a", "b"]}, {"Tags":["b", "c"]}]    

        $scope.filterTags = function(query){
            return function(elem){
                query = query.split(",");    

                for(i in query){    

                    if(elem.Tags.indexOf(query[i]) == -1){
                        return false;
                    }

                }    

                return true;
            };

        }    

    });

还有模板。

<div ng-app="myapp" ng-controller="myctrl">
    <input type='text' ng-model='formData.query' />
    <ul>
        <li ng-repeat='item in formData.list | filter:filterTags(formData.query)'>{{item.Tags}}</li>
    </ul>
</div>

最佳答案

你只是把一行放在了错误的地方。该行是:

query = query.split(",");

它应该位于 return function(elem) 行之前,这样您就不会每次都将其拆分。但更重要的是,这是因为该行将 query字符串更改为数组。并且数组没有 .split() 方法。因此会出现“未定义不是函数”错误。 :-)

更新的 JS 代码:

angular.module('myapp', [])
    .controller('myctrl', function($scope, $http) {
        $scope.formData = {};
        $scope.formData.query = "";    

        $scope.formData.list = [{"Tags":["a","b","c"]},{"Tags":["a","b"]},{"Tags":["b","c"]}]    

        $scope.filterTags = function(query){
            query = query.split(",");    
            return function(elem){
                for(var i in query){    
                    if(elem.Tags.indexOf(query[i]) == -1){
                        return false;
                    }
                }    
                return true;
            };
        }    
    });

关于javascript - AngularJS 类型错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25902181/

相关文章:

javascript - 在 javascript 代码中清除 setTimeout() 的问题

javascript - 如何选择 JSON 中存在的几个项目中的第一个?

javascript - 从浏览器开发人员工具控制台中的当前页面解析 json

javascript - 在 Angularjs 中使用按键调用函数

javascript - 如何为单击的按钮分配值

angularjs - Angular 指令正在加载多次

angularjs - 成功 callbackId 错误 ... ReferenceError : Can't find variable: $http

javascript - "TypeError: undefined is not a function"

python - .pop() 似乎在 Python 中触发了 TypeError,即使结果应该是一个列表

vue.js - [Vue警告] : Error in render: "TypeError: Cannot read properties of undefined (reading ' length')"error when using datatables in vue