我創建了一個過濾器,用於檢查用戶標識,然後過濾掉沒有該用戶標識的ng-repeat中的所有結果。使用控制器的自定義過濾器
如果我把我的過濾器,
UserService.getCurrentUser()
.then(function(user_id){
$scope.user_id = user_id;
});
在我的控制器,它工作正常,但我想保持我的控制器儘可能的乾淨,所以我想把它搬走。
我創建了一個名爲「userFilter.js」,這是代碼文件,
angular.module('addMovieseat', [])
.filter('user_filter', function() {
UserService.getCurrentUser()
.then(function(user_id){
$scope.user_id = user_id;
});
});
但是,當我注入過濾器進入我的控制器,我得到一個錯誤,
Error: [$injector:unpr] Unknown provider: user_filterProvider <- user_filter <- addMovieCtrl
這也是我的服務,我得到我目前的用戶ID,
(function(){
"use strict";
angular.module('addMovieseat')
.factory('UserService', function($http, $q){
return{
getCurrentUser: function(){
var user_id = null,
deferred = $q.defer();
// Get the current user id and use it to filter out all movies that do not correspond to that id in the main overview.
$http.get(('/users.json'),{ cache: true}).
success(function (data, status, headers, config) {
if (status == 200) {
deferred.resolve(data.id);
} else {
deferred.resolve(false);
console.error('Error happened while getting the user list.')
}
});
return deferred.promise;
}
}
});
})();
有在過濾器中不是'$ scope'。爲什麼你首先使用「過濾器」呢?顯示'getCurrentUser()'的代碼。另外一個過濾器需要返回一個函數,該函數依次返回該函數的結果。您的過濾器不會返回任何內容 – charlietfl
我正在使用過濾器,因爲我需要過濾掉所有不符合當前用戶ID的結果。我無法在我的RoR後端執行此操作,因爲對於不同的功能,我需要顯示所有結果。這就是我在Angular中過濾的原因。我也添加了該服務。 –
如果你想要的只是一個過濾列表,爲什麼不使用純$ filter或者array.filter –