我正在尝试在主状态解析函数中加载get服务JSON函数,因此我可以将数据存储到范围变量中。
帐户JSON信息是相关的,因为所有子页面基本上都依赖于信息。
-
以下代码部分正常运行。正在成功调用帐户解析函数,甚至$ http也会返回一个promise(状态=== 0)。问题是当帐户功能解析state.controller永远不会被调用。
$stateProvider
.state('app',{
url: '/',
views: {
'header': {
templateUrl: '../views/templates/partials/header.html',
},
'content': {
templateUrl: '../views/templates/partials/content.html'
},
'footer': {
templateUrl: '../views/templates/partials/footer.html',
}
},
resolve: {
account: function($timeout, accountFactory){
//Comment
return $http({method: 'GET', url: '/account.json'});
}
},
controller: ['$scope', 'account', function($scope, account){
// You can be sure that promiseObj is ready to use!
$scope.data = account;
console.log('SCOPE!!!!!');
}],
})
.state('app.accessory', {
url: 'accessory',
views: {
'content@': {
templateUrl: '../views/accessory/listing.html',
controller: 'accessoryListingCtrl',
controllerAs: 'vm'
}
}
})
}]);
答案 0 :(得分:1)
您的父状态配置不正确。使用多个命名视图时控制器不属于某个状态而属于视图,因此您应该将控制器语句移动到特定视图声明,或者如果您在任何地方需要它们,则将它们全部移动。
见这里:https://github.com/angular-ui/ui-router/wiki/Multiple-Named-Views
$stateProvider
.state('report',{
views: {
'filters': {
templateUrl: 'report-filters.html',
controller: function($scope){ ... controller stuff just for filters view ... }
},
'tabledata': {
templateUrl: 'report-table.html',
controller: function($scope){ ... controller stuff just for tabledata view ... }
},
'graph': {
templateUrl: 'report-graph.html',
controller: function($scope){ ... controller stuff just for graph view ... }
},
}
})
答案 1 :(得分:0)
我不知道为什么控制器没有被调用。但您可以首先确保resolve
始终返回数据。
resolve: {
account: function($timeout, accountFactory){
//Comment
return $http({method: 'GET', url: '/account.json'})
.$promise.then(
function(data) { return data; },
function(error) { return error; });
}
}