主干:mixin 事件从扩展视图扩展
Posted
技术标签:
【中文标题】主干:mixin 事件从扩展视图扩展【英文标题】:Backbone: mixin events extends from extending view 【发布时间】:2013-11-12 08:53:55 【问题描述】:我有这个被许多视图使用的 mixin
var EditTableRowMixin =
events:
"click .save": "save",
"click .abort": "abort"
,
/* common methods for table rows */
;
现在我有了一个新视图,它需要比这个 mixin 更多的事件:
var SpecialRowEditView = Backbone.View.extend(
tagName : "div",
events:
"click .remove" : "remove",
"click .add" : "add"
,
initialize: function()
/*Do things */
,
...
...
...
);
_.extend(SpecialRowEditView.prototype, EditTableRowMixin);
return SpecialRowEditView;
我试图将这些事件添加到 this.events (这是 mixins 事件)。它可以工作,但会破坏使用 mixin 的所有其他视图,因为这些视图现在出于某种原因寻找保存和中止功能。
我怎样才能用我只需要这个视图的事件来扩展 mixin 的事件?
【问题讨论】:
你可以试试SpecialRowEditView = SpecialRowEditView.extend( EditTableRowMixin )
【参考方案1】:
var more_events =
events:
"click .remove" : "remove",
"click .add" : "add"
,
_.extend(SpecialRowEditView.prototype, _.merge(EditTableRowMixin, more_events));
你的事件被 mixin 覆盖了。你需要将它们合并在一起。 这里我使用lodash 代替下划线。
【讨论】:
以上是关于主干:mixin 事件从扩展视图扩展的主要内容,如果未能解决你的问题,请参考以下文章