响应骨干关系中的类别模型更改
Responding to category model change in Backbone relational
我与骨干关系有一个模型关系设置,其中Item
属于Column
。将项目添加到列效果很好,但是如何引用项目的现有视图,以便将其从旧列中删除? (因此,项目当前正在跨列复制。
请参阅此 JSFiddle - http://jsfiddle.net/geVPp/1(我认为代码需要在 ColumnView
removeItem
事件处理程序中实现,但我可能是错的)。
(示例实例化位于脚本底部,因为我还没有 UI 控件。
这是小提琴的列视图:
var ColumnView = Backbone.View.extend({
className: 'column',
tagName: 'div',
template: Handlebars.compile($('#column-template').html()),
initialize: function() {
_.bindAll(this, 'render', 'renderItem', 'removeItem');
this.model.bind('change', this.render);
this.model.bind('reset', this.render);
this.model.bind('add:items', this.renderItem);
this.model.bind('remove:items', this.removeItem);
},
render: function() {
return $(this.el).html(this.template(this.model.toJSON()));
},
renderItem: function(item) {
var itemView = new ItemView({model: item});
this.$('.items').append($(itemView.render()));
},
removeItem: function(item) {
// @todo -- How do I reference the item model's view, in order to remove the DOM element?
}
});
不幸的是,
Backbone没有内置的方法;您必须手动跟踪子视图(以及它们映射到的模型)。
Backbone.Marionette有一个CollectionView类,可以为你自动化。 或者你可以像更新收藏视图一样推出自己的。
如果你想要一个快速修复,你可以保留对视图的引用作为模型对象的变量,但这很糟糕,因为它会阻止你显示同一模型的多个视图。
相关文章:
- Ext.js从json构建模型关系的问题
- 骨干关系中的链接模型
- 在Knockout.js模型中创建项之间的关系
- 使用茉莉花测试主干关系模型
- 当一个模型在骨干关系中被销毁时,销毁相关模型的最佳方法是什么?
- 在这种情况下,我应该如何在余烬中放置我的模型有很多关系
- Ember.js:如何表示一个有多个模型的关系
- 如何通过关系处理特定于父级的模型值
- 为什么没有将关系添加到模型中的 loopback.io 对象中
- 响应骨干关系中的类别模型更改
- Ember.js RESTful 模型关系
- 帆.js:模型本身的一对多关系
- 如何处理嵌套在关系模型中的集合
- 从另一个具有属于关系的模型访问模型属性 Ember.js
- 余烬.js有许多模型关系保存
- 以RESTful的方式处理模型关系
- 如何在路由/控制器中访问ember模型关系属性
- 在AngularJS中管理模型关系
- 强循环:相互模型关系
- 角度 JS 模型关系