apothekenService.getApotheke返回一个承诺。 promise中的response.data是一个正确传递的json对象,我可以在第一个console.log中看到它。
如何在解析中将此json对象转换为我的变量?当我在控制器中执行相同操作时,我只使用$ scope并在响应中绑定变量,但在这种情况下,我没有范围。
angular.module("test", ["ngAnimate", "ngCookies", "ngTouch", "ngSanitize", "ngResource", "ui.router", "ui.bootstrap", "ui.bootstrap.showErrors", "myApothekenService"]).config(function($stateProvider, $urlRouterProvider, $uiViewScrollProvider, showErrorsConfigProvider) {
$uiViewScrollProvider.useAnchorScroll;
return $stateProvider.state("root", {
abstract: true,
controller: "RootCtrl",
resolve: {
Apotheke: function(apothekenService) {
this.apo = {};
apothekenService.getApotheke().then(function(response) {
console.log(response.data);
return this.apo = response.data;
});
console.log(this.apo);
return this.apo;
}
}
});
}).controller("RootCtrl", function($scope, $location, $anchorScroll, Apotheke) {
$scope.apotheke = Apotheke;
console.log($scope.apotheke);
});
答案 0 :(得分:1)
你知道在promise解析函数(然后)中的这个与父解析函数中的 this 不同。如果你想使用这种模式,通常的惯例是在局部变量 self 中捕获 this ,并在整个解析函数中使用它。
但无论如何,我会这样做。这样,控制器代码就不会执行,直到解析了解决方案。
Apotheke: function(apothekenService) {
return apothekenService.getApotheke();
}**