正在加载ui路由器状态下的共享模型
Loading shared model in ui-router states
在state
更改之前,有更好的方法加载shared model
吗?
....
....
.state('state1',{
...
resolve : {
student : function($stateParams,StudentModel,StudentService){
return StudentService.getStudentById($stateParams.studentId).then(
function(response){
return StudentModel.loadStudent(response.data);
}
);
}
}
}).....
.....
...
在我当前的应用程序中,我使用resolve
属性加载所有的shared data models
,这样在填充StudentModel
之前就不会执行controllers/directives
。但在这里,为了加载StudentModel
,我在state
中创建了一个resolved object (student in this case)
,我不会在其他地方使用它。
在为特定的state
加载其他controllers/directives
之前,有没有更好的方法来加载我的shared models
?
[注意:我使用的是angular 1.4.2版本]
更新:很抱歉,我在上面的代码中错过了return语句,这造成了一些混乱。我的问题不是要让上面的代码工作。对于同样的行为,有什么替代方法吗?因为在这个设计中,我必须创建一个解析对象(student
),它不会在任何地方使用,而StudentModel
是在任何地方都使用的对象
因此,您没有正确实现promise函数。它应该返回等待视图渲染的承诺。
代码
student: function($stateParams, StudentModel, StudentService) {
return StudentService.getStudentById($stateParams.studentId).then(
function(response) {
return StudentModel.loadStudent(response.data);
}
);
}
除此之外,你们能详细说明问题的下一行吗?
在为特定状态加载其他控制器/指令之前,有没有更好的方法来加载我的共享模型
您需要在解析中返回$promise,以便在创建控制器之前加载数据。
resolve : {
student : function($stateParams,StudentModel,StudentService){
StudentService.getStudentById($stateParams.studentId).$promise;
}
}
然后在你的控制器中,你需要从参数中获取学生。
var StudentController = function(student, $scope) {
....
}
app.controller("StudentController", ["student", "$scope", StudentController]);
相关文章:
- Aurelia组件在其他视图模型中使用时不共享实例
- 正在加载ui路由器状态下的共享模型
- 主干网中的共享模型不获取事件
- 当多个对象共享同一视图模型时,如何在 kendo UI 中获取事件源
- ng-重复共享相同ng模型的ng-options
- 在 ExtJS 4 应用程序之间共享模型
- 在指令和嵌套指令之间共享模型
- 共享服务的模型是't在AngularJS中更新
- 如何使ng中的每个指令重复以共享同一个ng模型
- 在ui路由器中的状态之间共享ng模型数据
- 重用/共享视图&Durandal JS在不同项目中的模型
- 如何在没有循环依赖的模型之间正确共享Hapi-Joi验证模式
- 击倒可观测阵列.在多个视图模型之间共享
- 如何共享对数据模型的只读访问
- 在AngularJS中,如何为多个控制器的共享服务属性的异步模型更改更新绑定[.]
- AngularJS在控制器之间共享模型
- AngularJs:在指令之间共享模型数据
- Angular.JS:视图共享同一个控制器,当改变视图时,模型数据会重置
- Ember.js-如何在更多路线之间共享路线模型数据?-为什么不在组件中加载数据
- 在rails模型和angularjs控制器之间共享一个常量变量