我在我的应用程序中使用ui-router

app.config(['$stateProvider', function($stateProvider){
    $stateProvide.state('State1', {
       url:'/State1',
       resolve: {
          data: function(Service){
              return Service.init();
          }
       },
       views: {
            "header": {
                  templateUrl: 'views/header.tpl.html'
            },
            "center":{
                  templateUrl: 'views/center.tpl.html'
            },
            "footer": {
                  templateUrl: 'views/footer.tpl.html'
            }
          }
       }
    })
}
]);


我试图从服务器加载json文件并在路由器中解决它。
resolve对象中,我调用负责返回promise的服务。

Service.js:

app.service("Service", ['$rootscope', '$http', function($rootscope, $http){
var promise;
this.init = function(){
    promise = this.loadData();
    return promise;
};

this.loadData = function(){
    var url = "users/getData/json.json";
    return $http.get(url).then(function(response){
         return response.data;
    }, function(error){
        alert(error);
        })
    };
}])


center.tpl.html:

<aside id="first-item" ng-controller="FirstController as firstController">
     <first-directive>
</aside>
<aside id="second-item" ng-controller="SecondController as secondController">
     <second-directive>
</aside>


这是我要获取解析数据的控制器。

FirstController.js:

app.controller('FirstController', ['$scope', 'data', function($scope, data){
     this.myData = data;
}]);


我收到下一个错误:Unknown provider: dataProvider < - data。为什么?

最佳答案

因为承诺永远不会在返回之前解决。试试这个。

app.service("Service", ['$rootscope', '$http', function($rootscope, $http){
var promise;
this.init = function(){
   return this.loadData();
};

this.loadData = function(){
    var url = "users/getData/json.json";
    return $http.get(url).then(function(response){
         return response.data;
    }, function(error){
        alert(error);
        })
    };
}])

关于javascript - 无法将ui-router中的变量解析为 Controller 中的对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33912178/

10-12 12:22
查看更多