我将ui-router
用于AngularJS。
我已经定义了一些像这样的州。
$stateProvider.state(
{
name: 'home',
url: '^/?page&find',
controller: controller,
data: new cgTag.States.StateData('home', type),
resolve: resolve
}
);
我在执行状态控制器之前使用解析从服务器获取一些JSON,但我需要解析函数中此状态的state.data
对象。
我的解析器就像这样
function _resolve($http, $state, $stateParams)
{
var data = $state.current.data;
// ^^^^ this is the wrong state
return $http.post('/json/templates/layout', data);
}
var resolve = {
'layoutResponse': ['$http', '$state', '$stateParams', _resolve]
};
$stateProvider.state(
{
name: 'home',
url: '^/?page&find',
controller: controller,
data: new cgTag.States.StateData('home', type),
// ^^^ I need this object in my resolve function.
resolve: resolve
}
);
我的问题是$state.current
不是正在转变的州。它来自州。
如何在解析状态下获取解析函数中的state.data
对象?
答案 0 :(得分:4)
您可以通过在resolve函数中调用this.data
来获取当前状态的数据。
.config(function ($stateProvider) {
$stateProvider
.state('someState', {
url: '/',
resolve: {
resolveThis: function () {
alert(JSON.stringify(this.data)); // alerts you with delicious bacon
}
},
data: {
bacon: 'delicious'
}
});
});