Мы пишем приложение с использованием EmberJS. Однако мы все еще новы в этой структуре, и нам трудно решить некоторые из того, что может показаться прямым.
Модель довольно проста: есть 3 модели: очередь, задача и изображение. Мы используем динамические сегменты 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}}
И вот код для Thumbnail View:
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). Однако я не вижу изменений в пользовательском интерфейсе. Кроме того, строка, в которой я помещаю точку останова, кажется, не срабатывает. Но когда я обновляю страницу, она работает хорошо.
Что-то не так с моим кодом перехода?
Спасибо.