如何从指令控制器中生成$ http.get请求?

时间:2014-06-23 12:31:26

标签: angularjs

我有一个名为product的AngularJS指令。每当我点击一个按钮时,我就需要采取行动,该按钮是该指令的一部分,涉及向我的服务器发出$ http.get请求并对响应进行处理。我有一个文件似乎工作正常,直到它实际到达发出请求,此时,Fiddler中显示的网址与我尝试提出请求的网址不匹配,而且我是我不确定为什么。

正如您在下面看到的那样,请求应该是我的域/ api / product / GetToken api服务,但在Fiddler中,我表明要进入" / user / [object%20Object]& #34;相反,我不确定为什么会这样。此外,控制台不会产生错误。

以下是有问题的指令:

angular.module('myApp').directive('product', function($location) {
 return {
    restrict: 'E',
    replace: false,
    templateUrl: 'path/to/template.html',
    scope: {},
    controller: function($scope, $state, $cookieStore, $http) {
     $scope.productClick = function(key) {
      var url = 'http://exampleurl.com/api/product/GetToken';
      $http.get({url:url})
       .success(d, s, h, c) {
        $state.go('this.someplace');
      }
       .error(function(d, s, h, c) {
        $state.go('this.otherview');
       });
     },
     link: function($scope, e, a, m) {
      $scope.name = a.name + "123";
     }
    }
 }
}

有没有人知道我能做些什么而我没有赶上这里?

1 个答案:

答案 0 :(得分:5)

使用$ http和$ http.get有所不同。只需$ http,就像你写的那样(发送配置对象),但是使用$ http.get(或post等),你将url作为字符串传递。所以它是:

$http.get('/my/url/').success(...).error(...);

$http.post('/my/url/', dataObject).success(...).error(...);

或仅使用$ http

$http({url: '/my/url', method: 'GET'}).success(...).error(...);