ng-tags-input autocompete不工作

时间:2016-05-28 07:53:19

标签: angularjs ng-tags-input

我想将ng-tags-input与自动填充功能一起使用,但我收到了错误消息:

  

e.then不是函数

这是我的HTML

<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;
        });
};

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

您使用ng-tag-input来加载源代码的函数应该返回一个Promise对象,一个Promise有一个带有签名.then(fn, fn)的函数,这可能是它看起来的样子因为没有找到,所以你的..

e.then is not a function错误

如果您要转到demos section,在&#34;简单标签下输入自动完成功能&#34;,您将看到此代码

$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 docs