我的问题是,当用户转到我的路由簿/:id /:版本时,需要一些时间来提取JSON,并且快速返回它仍会呈现旧数据,然后将其替换为新数据。 / p>
这是我的路线:
App.BookRoute = Ember.Route.extend({
setupController: function (controller, model) {
// This gets the entire JSON for the single book
Ember.$.getJSON('/book?id=' + model.id + '&version=' + model.version,
function (data) {
// Set the json to the model
controller.set('model', data);
});
}
});
这是我的路由器:
App.Router.map(function () {
// Homepage (All the books)
this.resource('index', { path: '/' });
// Single Book view
this.resource('book', { path: '/book/:id/:version' });
});
例如,在第一次访问#/ book / 2/1时,它运行正常。下次访问另一本书#/ book / 3/1时,它会快速显示#/ book / 2/1的数据(html模板呈现),然后加载#/ book / 3/1的数据
用户离开后如何清除视图?或者如何使其不显示路线/视图中先前加载的书籍。
感谢。
修改(添加了可能的相关问题):
此外,我还有另一个可能相关或不相关的问题,但在将实际HTML呈现给DOM之前调用了didInsertElement事件。我认为在将HTML呈现给DOM之后调用此方法。
这是观点:
App.BookView = Ember.View.extend({
didInsertElement: function () {
console.log('inside didInsertElement');
}
});
答案 0 :(得分:0)
听起来好像是因为你在设置控制器挂钩中这样做了。获取这样的数据应该在模型钩子中完成。本指南告诉您如何操作,请参阅“动态路线”部分:http://emberjs.com/guides/routing/specifying-a-routes-model/
尝试这样做
App.Router.map(function () {
// Homepage (All the books)
this.resource('index', { path: '/' });
// Single Book view
this.resource('book', { path: '/book/:book_id/:version' });
});
App.BookRoute = Ember.Route.extend({
model: function(params) {
return Ember.$.getJSON('/book?id=' + params.book_id + '&version=' + params.version);
}
});
我实际上认为:id作为param是保留的,因为它建议做:book_id