在不同的视图之间共享相同的操作/功能
Share the same action/function between different views
假设我对特定于项目的 DOM 事件有不同的视图events: { "dblclick div.editable": "edit" }
我想在不同的视图之间edit
共享函数(然后保存)。
var View1 = Backbone.View.extend({
events: { "dblclick div.editable": "edit" },
edit: function () {} // function I would like to share btw diff views
});
var View2 = Backbone.View.extend({
events: { "dblclick div.editable": "edit" },
edit: function () {} // function I would like to share btw diff views
});
有可能吗?
最好的方法是什么?
有一些例子吗?
在主干模式站点上描述了如何使用 Mixins 来解决这种设计问题:
问题:有时您对多个具有相同的功能 对象,将对象包装在父对象中是没有意义的 对象。例如,如果您有两个共享方法的视图,但 不要 - 也不应该 - 具有共享的父视图。
解决方案:对于此方案,适合使用 mixin。
所以在这种情况下,它可能是这样的:
App.Mixins.Editable = {
edit: function() { /* ... */ },
open: function() { /*... */ },
close: function() { /* ... */ }
};
App.Views.YourEditPage = Backbone.View.extend(
_.extend({}, App.Mixins.Editable, {
events: { "dblclick div.editable": "edit" },
// (Methods and attributes here)
}));
即使我认为@IntoTheVoid更优雅,我想公开一个非常简单的方法:一个 Utils 模块:
var App = function(){};
App.Utils = {
myCommonFunction: function( param ){
// code
}
}
var View1 = Backbone.View.extend({
events: { "dblclick div.editable": "edit" },
edit: function() {
App.Utils.myCommonFunction( "param" );
}
});
var View2 = Backbone.View.extend({
events: { "dblclick div.editable": "edit" },
edit: function() {
App.Utils.myCommonFunction( "param" );
}
});
相关文章:
- 如何使jQuery插件函数可调用以供独立使用,而不在集合上操作
- 添加文字和评论功能更新Div
- JavaScript打印功能使日历停止工作
- Jquery菜单操作不稳定,定位不正确,存在一般错误
- jQuery点击操作被排序功能剥离
- 单击和键控操作可以完成一个功能
- 当您滚动到特定页面位置时,如何执行此操作,该功能将启动一次
- 同时具有操作和提交功能的提交表单
- 在不同的视图之间共享相同的操作/功能
- 确认框取消功能与确定执行相同的操作
- 数据库操作后,Ajax 功能不起作用
- 在 html/js 中没有点击功能的滚动页面操作
- 带操作和存储功能的单选按钮
- 语音间隙互操作功能
- Javascript自定义操作的功能键按下
- 覆盖功能键默认操作在Chrome
- 自定义操作功能
- 如何通过分析功能跟踪Ajax操作
- Facebook登录功能没有;t在登录后执行任何操作
- 对承诺的功能操作(例如筛选)