在输入由'completeList'过滤的字段时,我收到以下错误。为什么会这样?
的JavaScript
angular.module('myApp', ['timer'])
.controller('AppCtrl',['$scope', function($scope){
$scope.gameOn = true;
$scope.leaders = true;
$scope.myScore = true;
}])
.filter('completeList', function() {
return function(items) {
var list = [];
if(items) {
list = items.split(',');
var last = list[list.length - 1];
if(items.charAt(items.length - 1) != ',' || last.length === 0)
list.pop();
}
return list;
};
});
HTML
<div ng-show="gameOn" ng-controller="LabelCtrl" class="row marketing">
<div class="col-lg-4">
<h4>Enter comma-separated labels for this image</h4>
<form role="form" class="form-inline" >
<input ng-list ng-model="labels" placeholder="Enter labels" class="form-control" type="text" >
<button class="form-control" class="btn btn-xs btn-success">Submit</button>
</form>
</div>
<div class="col-lg-2">
<h4>Labels</h4>
<div>
<ol>
<li ng-repeat="label in labels track by $index | completeList">
{{ label }}
</li>
</ol>
</div>
</div>
答案 0 :(得分:0)
我不知道标签的数据结构是什么,所以这里是我最好的刺。过滤器应用于循环迭代的实例。看起来您可能正在尝试将过滤器应用于整个集合而不是循环的索引。过滤器适用于标签而非标签。在这种情况下,您无法拆分它。我再也不知道你的数据结构,所以我在这里猜测。如果你能揭示出什么标签会很有帮助。
谢谢,
约旦
答案 1 :(得分:0)
好消息是你只有一个小的Angular语法错误。它实际上在documentation:
中提到在指定a之前,应将过滤器应用于表达式 跟踪表达。
...
例如:'item in items | filter:searchText track by item.id'是一种模式,可用于将过滤器与跟踪表达式一起应用于项目。
鉴于这些知识,只需将您的ngRepeat行更改为以下内容,它确实可以按照您的预期工作,并且在我身边完美运行:
<li ng-repeat="label in labels | completeList track by $index">