使用$ http方法的自定义服务在Angular中无法正常工作

时间:2017-07-21 05:28:25

标签: javascript angularjs

我是angularJS的新手,试图创建自己的自定义服务,我在这里使用$ http方法是我的代码

************* HTML *********

<div ng-app="dummyApp">
<div ng-controller="myserctrl">
    <label>My label</label>
    {{resData}}
</div>

************* Ctrl *********

var myreq = angular.module("dummyApp", []);
myreq.controller('myserctrl', function($scope, myService, $rootScope) {
    $scope.resData = result.data.content;
});

*************服务*********

myreq.service("myService", function($rootScope, $http){
$rootScope.result = {};
$http.get('https://api.myjson.com/bins/dtm5r')
.then(function (data) {
    result = data;
    console.log($rootScope.result);
})
.then(function (data){
    console.log("the Data is error")
})
});

我的电话正在进行,我得到了成功的结果,但是我在控制器中遗漏了一些内容,因为我没有在html中获取正确的数据可以帮助我

由于

2 个答案:

答案 0 :(得分:3)

 myreq.service("myService", function($rootScope, $http){
  // $rootScope is persistent but it is not available
  this.getData = function(){
      return $http.get('https://api.myjson.com/bins/dtm5r');
  }
});


    var myreq = angular.module("dummyApp", []);
    myreq.controller('myserctrl', function($scope, myService, $rootScope) {
        myService.getData().then(function (data) {
            $scope.resData = data;
            console.log($rootScope.result);
        });

});
  

我建议您完成AJAX的异步性以及承诺,这些应该可以帮助您更好地理解行为。

答案 1 :(得分:0)

在控制器中更改

$scope.resData = result.data.content;

$scope.resData = $rootScope.result.data.content;

并在你的

服务

result = data;更改为$rootScope.result = data;