使用ui.router这成功地将我引导到正确的视图并正确地从我的工厂检索数据:
.state('calendar', {
url: '/calendar',
templateUrl: 'templates/calendar.html',
controller: 'calendarCtrl',
resolve: {
workoutData: ['WorkoutData', function(WorkoutData){ // USING A FACTORY (workoutDataFct.js)
return WorkoutData.get();
}]
}
})
但我现在想从另一家工厂提取数据,但我似乎无法添加这样的新工厂:
resolve: {
workoutData: ['WorkoutData', function(WorkoutData){
return WorkoutData.get();
}],
exercises: ['Exercises', function(Exercises){ // USING FACTORY (exercisesFct.js)
return Exercises.get();
}]
}
我的工厂exerciseFct.js
已包含在我的index.html
中,就像workoutDataFct.js
一样,我将exercises
依赖项包含在我的控制器calendarCtrl
中,就像我一样添加了workoutData
依赖项。 (我忘了做某事吗?)
我没有得到并控制错误,但我没有路由到日历视图。这让我觉得resolve:
失败了。 如何解决此问题?
答案 0 :(得分:0)
为了清楚说明,您可以选择适用的选项。
选项1:
等待所有承诺以$ q.all结束。
resolve: {
delayedData: function($q, WorkoutData, Exercises) {
var WorkoutData = WorkoutData.get();
var Exercises = Exercises.get();
WorkoutData.$promise.then(function(response) {console.log('Resource 1 data loaded!')});
Exercises.$promise.then(function(response) {console.log('Resource 2 data loaded!')});
return $q.all([WorkoutData.$promise, Exercises.$promise]);
}
}
可以找到工作示例here。
选项2:
正如@ExplosionPills声明的那样,使用了对象。
resolve: {
WorkoutData: ["WorkoutData", function (Gists) {
var WorkoutData = WorkoutData.get();
WorkoutData.$promise.then(function(response) {console.log('Resource 1 data loaded!')});
}],
Exercises: ["Exercises", function (Meta) {
var Exercises = Exercises.get();
Exercises.$promise.then(function(response) {console.log('Resource 2 data loaded!')});
}]
}
可以找到工作示例here。
感谢@Explosion Pills提供您的输入。