Я работаю над своим первым приложением Ember.js, и хотя у меня есть загрузка шаблона, когда я пытаюсь вызвать действие, которое я определил в контроллере , Я получаю сообщение об ошибке: «Uncaught Error: Nothing обработал событие showNew». Я не уверен, что неправильно настроил маршрут и контроллер, или если мне не хватает чего-то другого.Ember.js Ошибка действий: «Ничего не обработано событие»
./router.js:
Seanchai.Router.map(function(){
this.resource("stories", function(){
this.route('new');
});
});
Seanchai.StoriesRoute = Ember.Route.extend({
model: function(){
Seanchai.Story.find();
}
});
Seanchai.Router.reopen({
location: 'history'
});
./controllers/stories_controller.js:
Seanchai.StoriesController = Ember.ArrayController.extend({
showNew: function() {
this.set('isNewVisible', true);
}
});
./templates/stories/index.hbs:
<table>
<thead>
<tr>
<th>ID</th>
<th>Name</th>
</tr>
</thead>
<tbody>
{{#each stories}}
{{view Seanchai.ShowStoryView storyBinding="this"}}
{{/each}}
{{#if isNewVisible}}
<tr>
<td>*</td>
<td>
Test
</td>
</tr>
{{/if}}
</tbody>
</table>
<div class="commands">
<a href="#" {{action showNew}}>New Story</a>
</div>
Если Я перемещаю действие в маршрутизатор, так оно и работает, но на основе документации выглядит так, что я должен это сделать в контроллере.
обновляемые ./router.js:
Seanchai.Router.map(function(){
this.resource("stories", function(){
this.route('new');
});
});
Seanchai.StoriesRoute = Ember.Route.extend({
model: function(){
Seanchai.Story.find();
},
events: {
showNew: function() {
this.set('isNewVisible', true);
}
}
});
Seanchai.Router.reopen({
location: 'history'
});
Очевидно, я что-то отсутствует, но я не уверен, что.
Вот и все! Огромное спасибо. Я думал, что в отсутствие StoriesIndexController он свернется к действиям в StoriesController. Итак, мне нужен шаблон story.hbs, который будет использоваться для использования StoriesController, и в противном случае я бы использовал контроллер, соответствующий этому шаблону. Просто хочу убедиться, что я понимаю модель. – saalon
в основном, когда у вас есть ресурс типа 'this.resource ('stories')', определенный на вашем маршрутизаторе, тогда вам нужен дополнительный маршрут 'index', чтобы иметь возможность подключиться, это не тот случай, если вы определяете только' this.route ('stories') ', см. здесь в разделе' resources' http://emberjs.com/guides/routing/defining-your-routes/ – intuitivepixel