给定一个页面使用Backbone.js将一个Collection绑定到一个View(RowsView创建一个<ul>),为集合中的每个Model 创建子视图(RowView,创建<li>),我有一个问题是为这些模型设置内联编辑集合.
我在视图edit()上创建了一个用文本框RowView替换li内容的方法,如果用户tab在该文本框中按下,我想触发edit()列表中下一个视图的方法.
我可以在集合中获得下一个模型的模型:
// within a RowView 'keydown' event handler
var myIndex = this.model.collection.indexOf(this.model);
var nextModel = this.model.collection.at(myIndex+1);
Run Code Online (Sandbox Code Playgroud)
但问题是,如何找到附加到该模型的视图.父RowsView视图不会保留对所有子视图的引用; 它的render()方法是:
this.$el.html(''); // Clear
this.model.each(function (model) {
this.$el.append(new RowView({ model:model} ).render().el);
}, this);
Run Code Online (Sandbox Code Playgroud)
我是否需要重写它以保持一个单独的指针数组指向RowView它下面的所有s?或者是否有一种聪明的方法可以找到附有已知模型的View?
这是整个问题的一个问题:http://jsfiddle.net/midnightlightning/G4NeJ/
Dan*_*nda 13
在模型中存储对View的引用并不优雅,但是您可以将View与模型与事件链接,请执行以下操作:
// within a RowView 'keydown' event handler
var myIndex = this.model.collection.indexOf(this.model);
var nextModel = this.model.collection.at(myIndex+1);
nextModel.trigger('prepareEdit');
Run Code Online (Sandbox Code Playgroud)
在RowView中监听事件prepareEdit并在该侦听器中调用edit(),如下所示:
this.model.on('prepareEdit', this.edit);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7492 次 |
| 最近记录: |