我是角度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
答案 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会使代码按预期工作。