我正在使用FixtureAdapter将Ember 1.0与Ember Data 1.0 Canary一起运行。我的一条路线将在我第一次输入时正确加载其模型,但随后的任何时间数据都将为空。这是该路线:
App.PlannerRoute = App.AuthenticatedRoute.extend({
model: function() {
var snapshotId,
scenarioController = this.controllerFor('scenario'),
snapshot = scenarioController.get('selectedSnapshot'),
scenario = scenarioController.get('content');
if ( !snapshot ) {
if ( !scenario )
this.transitionTo('scenarios');
else
this.transitionTo('scenario', scenario);
}
snapshotId = snapshot.get('id');
return Ember.Object.create({
regions: this.store.find('region', { snapshot: snapshotId }),
networks: this.store.find('networks', { snapshot: snapshotId }),
terminals: this.store.find('terminals', { snapshot: snapshotId })
});
}
});
如果我在上面的模型方法中的 return 语句处设置断点,我发现对 this.store.find
的调用总是检索正确的数据。但是,数据仅在第一次转换到路由时填充到路由的控制器/视图/模板/等中。
感谢在追踪问题方面的任何帮助。我该如何解决这个问题?
你有没有尝试过这样的事情:
...
snapshotId = snapshot.get('id');
var regions = this.store.find('region', { snapshot: snapshotId }),
networks = this.store.find('networks', { snapshot: snapshotId }),
terminals = this.store.find('terminals', { snapshot: snapshotId });
return Ember.RSVP.all([ regions, networks, terminals ]).then(function(results){
return Ember.Object.create({
regions: results[0],
networks: results[1],
terminals: results[2]
});
});