Angularjs 带有';根';在子状态控制器之前未解析状态
对于我在AngularJS中开发的应用程序,我有以下问题:Angularjs 带有';根';在子状态控制器之前未解析状态,angularjs,angular-ui-router,Angularjs,Angular Ui Router,对于我在AngularJS中开发的应用程序,我有以下问题: 在应用程序启动之前,我已经设置了2个解析函数来从本地文件加载rest/properties的翻译 我在应用程序的“根”状态中添加了2个解析函数 我已经定义了“子状态”,它应该从“根状态”继承解析 我注意到子状态上的自定义函数控制器在根状态的解析函数之后不会执行 国家定义: app.config(function($stateProvider, $urlRouterProvider) { $urlRouterProvider.oth
- 在应用程序启动之前,我已经设置了2个解析函数来从本地文件加载rest/properties的翻译
- 我在应用程序的“根”状态中添加了2个解析函数
- 我已经定义了“子状态”,它应该从“根状态”继承解析
- 我注意到子状态上的自定义函数控制器在根状态的解析函数之后不会执行
app.config(function($stateProvider, $urlRouterProvider) {
$urlRouterProvider.otherwise('/app/start');
$stateProvider
// load dependencies on state
.state('app', {
url: "/app",
abstract: true,
template: "<div class='page' ui-view></div>",
resolve: {
// load properties
loadProperties: function(properties){
alert('load properties');
return properties.initProperties();
},
// load labels
loadLocalization: function(localize, loadProperties){
alert('load localization');
return localize.initLocalizedResources();
}
}
})
// dashboard : general index
.state('app.dashboard', {
url: "/dashboard",
templateUrl: "partials/dashboard/dashboard.html",
controller: "dashboardController",
resolve:{
// load workorders
loadData: function(wkorderService){
alert('load work orders service data');
return wkorderService.getData(null, null);
}
}
})
});
app.config(函数($stateProvider,$urlRouterProvider){
$urlRouterProvider。否则('/app/start');
$stateProvider
//加载对状态的依赖关系
.state('应用程序'{
url:“/app”,
摘要:没错,
模板:“”,
决议:{
//负载特性
loadProperties:函数(属性){
警报(“加载属性”);
返回properties.initProperties();
},
//装载标签
loadLocalization:函数(localize,loadProperties){
警报(“负载本地化”);
返回localize.initLocalizedResources();
}
}
})
//仪表板:一般索引
.state('app.dashboard'{
url:“/dashboard”,
templateUrl:“partials/dashboard/dashboard.html”,
控制器:“仪表板控制器”,
决心:{
//装载作业单
loadData:函数(wkorderService){
警报(“加载工单服务数据”);
返回wkorderService.getData(null,null);
}
}
})
});
我添加了警报以检查序列,并且在通过URL访问应用程序仪表板
状态时,我注意到警报的顺序:
- 警报(“加载属性”)李>
- 警报(“加载工单服务数据”)李>
- 警报(“负载本地化”)李>
提前感谢您调查此问题 基本上,将“app.dashboard”状态更改为以下状态修复了我的问题:
// dashboard : general index
.state('app.dashboard', {
url: "/dashboard",
templateUrl: "partials/dashboard/dashboard.html",
controller: "dashboardController",
resolve:{
// load workorders
loadData: function(wkorderService,loadLocalization){
alert('load work orders service data');
return wkorderService.getData(null, null);
}
}
})
我认为“根”状态的解析是在子状态解析之前自动调用的。我猜不是,因此专门在loadData方法构造函数中添加了
loadLocalization
resolve ui router 0.2.x一起处理整个转换的所有解析。正如您所发现的,可以使用在子状态中添加对父状态的解析的依赖来排序解析执行。在ui router 1.0中,我们添加了解析策略,该策略允许您指定是否需要该行为(“急切策略”),是否要等待状态进入(“惰性策略”),或者是否不希望解析发生在将要注入其他位置之前(“即时策略”)