2016-07-26 263 views
0

我想使用ngTagInput與自動完成,但得到以下錯誤:錯誤a.filter不是一個函數

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

+0

你能提供一個顯示你的問題的Plunker嗎?你可以使用[這個模板](http://plnkr.co/edit/tpl:93P2qxOjYmlcYSqDmo39)。 –

+0

@邁克爾本福德:嗨,我更新了這個問題的重拳。 1.首先ngtagInput是你提供的組件..沒有改變 2.第二ngtagInput是與承諾,但沒有http調用。 3.第三個是我使用http get with promise的實際問題。 就我而言,URL是後端REST服務的URL。我正在進入sucess block,獲取數據數組,但是當涉及到「return $ defer.promise」時,它會失敗,並顯示我在問題陳述中提到的錯誤 – user3709671

+0

http://plnkr.co/edit/vKvNCcSwuzeGv65poVEB?p=preview – user3709671

回答

0

您使用的是success方法,是不是可鏈接的,也就是說,它忽略了返回值,所以getData功能,事實上,直接返回$http承諾,它根據你的Plunker,恰好解決到一個未確定的值,因此filter is not a function錯誤,因爲autoComplete指令需要一個數組。

您應該使用的then代替success(你也不必爲了創建一個新的承諾,從另一個諾言內返回一個值):

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

Updated Plunker

那會工作,但它沒有多大意義,因爲它發出請求,然後放棄其響應。如果您不需要處理響應,你可以簡單地返回HTTP承諾直接(假設響應結構是有效的指令):

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

最後,兩人successerror方法have been deprecated。您應該始終使用then

+0

多數民衆贊成真棒!它的工作..我使用的是成功,而不是..很酷謝謝@Michael – user3709671

+0

有沒有什麼辦法,我可以改變用戶輸入的標籤的顏色不是建議列表的一部分?即警告用戶他將添加未知標記(紅色) – user3709671

+0

@ user3709671您應該[爲此創建](http://stackoverflow.com/questions/ask)另一個問題。 –

相關問題