【问题标题】:Error using ngTagInput : TypeError: a.filter is not a function使用 ngTagInput 时出错:TypeError: a.filter 不是函数
【发布时间】:2016-07-26 23:38:25
【问题描述】:

我正在尝试使用带有自动完成功能的 ngTagInput,但出现以下错误:

angular.min.js:117 TypeError: a.filter is not a function
at d (ng-tags-input.min.js:1)
at ng-tags-input.min.js:1
at angular.min.js:130
at n.$eval (angular.min.js:144)
at n.$digest (angular.min.js:142)
at n.$apply (angular.min.js:145)
at l (angular.min.js:97)
at H (angular.min.js:101)
at XMLHttpRequest.u.onload (angular.min.js:102)

HTML

<tags-input ng-model="selectedList">
  <auto-complete source="getData($query)"></auto-complete>
</tags-input>

Javascript

$scope.getData = function(query) { 
  var request = {
    // GET request is defined here
  };

  return $http(request).success(function(response, status) {
    var defer = $q.defer();
    defer.resolve([
      { 'text': 'just' },
      { 'text': 'some' },
      { 'text': 'cool' },
      { 'text': 'tags' }
    ]);
    return defer.promise;
  });
};

Plunker

【问题讨论】:

  • 您能提供一个 Plunker 来显示您的问题吗?你可以使用this template
  • @MichaelBenford :嘿,我用问题更新了 plunker。 1. 第一个 ngtagInput 是您提供的组件..没有任何改变 2. 第二个 ngtagInput 使用 promise 但没有 http get 调用。 3.第三个是我使用http get with promise的实际问题。在我的例子中, URL 是后端 REST 服务的 url。我进入成功块,获取数据数组,但是当涉及到“return $defer.promise”时,它失败并出现我在问题陈述中提到的错误

标签: ng-tags-input


【解决方案1】:

您正在使用 success 方法,该方法不可链接,即它忽略返回值,因此 getData 函数实际上是直接返回 $http 承诺,根据您的 Plunker,碰巧解析为一个未确定的值,因此出现filter is not a function 错误,因为autoComplete 指令需要一个数组。

你应该使用then而不是success(你也不需要创建一个新的promise来从另一个promise中返回一个值):

$scope.getData = function(query) { 
  ...
  return $http(request).then(function(response, status) {
    return [
      { 'text': 'just' },
      { 'text': 'some' },
      { 'text': 'cool' },
      { 'text': 'tags' }
   ];
  });
}

Updated Plunker

这会起作用,但它没有多大意义,因为它发出一个请求,然后丢弃它的响应。如果不需要处理响应,直接返回http promise即可(假设响应结构对指令有效):

$scope.getData = function(query) { 
  ...
  return $http(request);
};

最后,successerror 方法 have been deprecated。您应该始终使用then

【讨论】:

  • 太棒了!它起作用了..我使用的是success而不是那时..很酷谢谢@Michael
  • 有什么办法可以改变用户输入的不属于建议列表的标签的颜色吗?即作为警告用户他将添加未知标签(红色?)
  • @user3709671 你应该create 另一个问题。
  • 当然..我会这样做:) 这是问题的链接stackoverflow.com/questions/38645139/…
猜你喜欢
  • 1970-01-01
  • 2020-11-17
  • 1970-01-01
  • 2021-09-06
  • 1970-01-01
  • 2021-08-09
  • 2013-07-16
  • 2019-04-01
  • 2019-07-05
相关资源
最近更新 更多