2017-04-23 170 views
-2

我要注入$ HTTP在我的自定義過濾器,使用它在我的觀點:注入dependecy自定義過濾器angularJS

angular.module('demo').filter('quesByID',['$http', function() { 
var input=""; 
    return function(input) { 
     $http.get("http://localhost:3003/api/quiz/"+input).then(function(reponse){ 
      input=reponse.data; 
     }); 
      return input; 

    } 

}]); 

我有錯誤$ HTTP是沒有定義

angular.js:13920 ReferenceError: $http is not defined 
    at getQuestionById.js:4 
    at fn (eval at compile (angular.js:14817), <anonymous>:4:198) 
    at regularInterceptedExpression (angular.js:16043) 
    at expressionInputWatch (angular.js:15948) 
    at Scope.$digest (angular.js:17515) 
    at Scope.$apply (angular.js:17790) 
    at done (angular.js:11831) 
    at completeRequest (angular.js:12033) 
    at XMLHttpRequest.requestLoaded (angular.js:11966) 

在哪裏我應該注入「$ http」的依賴嗎?

+2

實際上你需要提供'$ http'作爲該功能的參數;即'函數($ http){' – Claies

+2

爲什麼你使用這個過濾器? – charlietfl

+0

您正在濫用篩選器。改爲使用服務。在控制器中這樣做(如答案所示)是一種快速解決方法,但很難稱之爲最佳實踐。 – estus

回答

0

您注射dependency但不能用作argument在功能

不要使用過濾器,您可以在控制器編寫代碼

angular.module('demo').controller('controller',['$http', function($http) { 
    $scope.data; 
    $scope.getData = function(input) { 
     $http.get("http://localhost:3003/api/quiz/"+input).then(function(reponse){ 
      $scope.data = reponse.data; 
     }); 
    } 
}]); 
+0

'$ http'是**異步**這根本行不通 – charlietfl

+0

我修復了用戶的主要問題,並非全部。但是現在我更新了所有的東西 – Gaurav

+0

仍然無法工作......您將如何使用從過濾器返回的承諾?還要考慮在視圖中使用這種過濾器時會發生多少次這樣的請求。整個事情沒有意義 – charlietfl

相關問題