我们正在构建一个 Ember 应用程序并使用大量嵌套视图,到目前为止,除了一个问题外,一切都在解决。当我们尝试在其中一个嵌套视图中执行操作时,事情就会出错。
有问题的观点是:
App.TodoView = Ember.View.extend({
templateName: 'app/templates/todo'
});
App.Todo_entriesView = Ember.View.extend({
templateName: 'app/templates/todo_entries'
});
App.Todo_entryView = Ember.View.extend({
templateName: 'app/templates/todo_entry',
});
模板是:
/templates/todo.hbs
<article>
<h1>{{title}}</h1>
{{outlet}}
</article>
/templates/todo_entries.hbs
{{#if isLoading}}
<p>Loading...</p>
{{else}}
<ul class="list">
{{collection contentBinding="content" itemViewClass="App.Todo_entryView"}}
</ul>
{{/if}}
/templates/todo_entry.hbs
<li>
{{#if isLoading}}
Loading...
{{else}}
{{view.content.id}}) {{view.content.title}}
<a {{action deleteRecord href="true" target="controller"}}>Delete</a>
{{/if}}
</li>
控制器是:
App.TodoController = Ember.ObjectController.extend({
deleteRecord: function() {
this.get('content').deleteRecord();
this.transaction.commit();
App.router.transitionTo('todo');
}
});
App.Todo_entriesController = Ember.ArrayController.extend();
App.Todo_entryController = Ember.ObjectController.extend({
deleteRecord: function() {
this.get('content').deleteRecord();
this.transaction.commit();
App.router.transitionTo('todo');
}
});
当单击删除按钮时,我们得到一个错误,即 deleteRecord 方法不存在于 Todo_entriesController(即视图的父级)上,而不是我们期望的 Todo_entryController 上。
有谁知道我们如何在 Todo_entry 模板中获取 deleteRecord 操作以正确调用 Todo_entryController deleteRecord 方法?还是有更好的方法来完全做到这一点?
谢谢,丹