$ http不是指令的链接函数中的函数

时间:2016-01-24 16:45:13

标签: javascript angularjs angularjs-directive angular-http

我是角度js的新手,并尝试使用指令。 我想在指令的link函数中使用$ http。 以下是我的代码

MyApp.directive('appItem', ['$http',function() { 
  return { 
    restrict: 'E', 
    scope: { 
      transaction: '=' 
    }, 
    templateUrl: 'js/directives/appItem.html' ,

    link: function($scope, $http, element, attrs) {
            $scope.process = function(trId) {
               $http({
                    method: 'PATCH',
                    url: 'http://myapp.domain.local/api/v1/items/'+trId+'.json'
                }).
               then(function successCallback(response) {
                console.log(response);
               });
            }
        }

  }
}]);

但它给了我错误:

$http is not a function

2 个答案:

答案 0 :(得分:7)

MyApp.directive('appItem', ['$http',function($http) { 
  return { 
    restrict: 'E', 
    scope: { 
      transaction: '=' 
    }, 
    templateUrl: 'js/directives/appItem.html' ,

    link: function(scope,element, attrs) {
            scope.process = function(trId) {
               $http({
                    method: 'PATCH',
                    url: 'http://myapp.domain.local/api/v1/items/'+trId+'.json'
                }).
               then(function successCallback(response) {
                console.log(response);
               });
            }
        }

  }
}]);

答案 1 :(得分:1)

这是因为链接函数不是依赖注入指令函数。

链接函数按此特定顺序给出范围对象,jQLite(jQuery)包装元素,属性对象和可选控制器对象。

另一方面,指令函数注入依赖项,因此放置$ http会使代码按预期工作。