收到 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/