我想使用具有自动完成功能的ng-tags-input
,但收到错误:
e.then 不是一个函数
这是我的网页
<tags-input ng-model="selectedBodyParts" class="ui-tags-input" add-on-paste="true">
<auto-complete source="loadBodyParts($query)" min-length="0" load-on-focus="true">
</auto-complete>
</tags-input>
和 AngularJS 代码:
$scope.loadBodyParts = function ($query){
var bodypartList = angular.copy($scope.bodyParts);
return bodypartList.filter(function(bodypart) {
return bodypart.bodyPartName.toLowerCase().indexOf($query.toLowerCase()) !== -1;
});
};
任何帮助将不胜感激!
你用ng-tag-input
加载源代码的函数应该返回一个Promise
对象,一个 Promise 有一个带有签名.then(fn, fn)
的函数,这可能是它所寻找的和没有找到的,因此你的。
e.then is not a function
错误
如果您要转到演示部分,在"使用自动完成功能输入的简单标签"下,您将看到此代码
$scope.loadTags = function(query) {
return $http.get('tags.json');
};
在角度$http.get
中返回一个承诺。如果我必须更改您的代码,我可能会使用 $q
来承诺您的数据并返回一个包含您过滤数据的承诺。
$scope.loadBodyParts = function ($query){
var bodypartList = angular.copy($scope.bodyParts);
var promisifyMe = bodypartList.filter(function(bodypart) {
return bodypart.bodyPartName.toLowerCase().indexOf($query.toLowerCase()) !== -1;
});
return $q.when(promisifyMe);
};
$q文档