我们正在使用 EmberJS 编写应用程序。然而,我们仍然是这个框架的新手,我们很难解决一些看似直截了当的问题。
该模型非常简单,有 3 个模型:Queue、Task 和 Image。我们为所有路由使用动态 URI 段,这些模型的路由嵌套在以下形式:: queue_id/:task_id/:image_id。
路由是这样配置的:
App.Router.map(function() {
this.resource('queue', {path: ':queue_id'}, function() {
this.resource('task', {path: ':task_id'}, function() {
this.resource('image', {path: ':image_id'});
});
});
}
在 HTML 的某个地方,我们有一个简单的模板来遍历任务中的所有图像:
{{#each task.images}}
<li>
{{#view App.ThumbnailView.contentBinding="this"}}
<img {{bindAttr src="thumbnail.url"}} />
{{/view}}
</li>
{{/each}}
这是缩略图视图的代码:
App.ThumbnailView = Ember.View.extend({
tagName : 'a',
click : function(e) {
var task = //assume this value exists;
var queue = //assume this value exists;
var image = //assume this value exists;
this.get('controller.target.router').transitionTo('image', queue, task, image);
}
});
最后,这是我们的 ImageRoute:
App.Image = Ember.Object.extend();
App.Image.reopenClass({
find : function(image_id) {
//This is where I set a breakpoint
console.log(image_id);
}
});
App.ImageRoute = Ember.Route.extend({
model : function(params) {
//image_id is the last uri segment in: #/1/1/1
return App.Image.find(params.image_id);
}
});
问题:
调用this.get('controller.target.router').transitionTo()
似乎有效。我可以看到,当我单击其中一个缩略图视图时,URL 会发生变化(例如,从 /1/1/2 变为 /1/1/3 之类的东西)。但是,我没有在 UI 中看到任何状态变化。此外,我放置断点的行似乎没有被触发。但是当我刷新页面时,它运行良好。
我的转换代码有问题吗?
谢谢。