javascript - 在不同 View 之间共享相同的操作/功能

标签 javascript backbone.js

假设我有不同的 View ,每个 View 都有特定于某个项目的 DOM 事件 events: { "dblclick div.editable": "edit"}
我想在不同 View 之间共享功能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
});

有可能吗?
最好的方法是什么?
有一些例子吗?

最佳答案

关于Backbone patterns site描述了如何使用Mixins来解决这种设计问题:

The problem: Sometimes you have the same functionality for multiple objects and it doesn't make sense to wrap your objects in a parent object. For example, if you have two views that share methods but don't -- and shouldn't -- have a shared parent view.

The solution: For this scenario, it's appropriate to use a 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)

}));

关于javascript - 在不同 View 之间共享相同的操作/功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10536882/

相关文章:

backbone.js - Backbone.Marionette - 具有不同 ItemView 类的 CollectionView

javascript - 使用jquery和html5显示存储在arraylist中的数据

javascript - 从谷歌地图和搜索中检索坐标

javascript - 集合创建后如何重新获取 Backbone 集合?

MVC/Backbone.js 应用程序的 JavaScript 布局管理?

javascript - Backbone.view选项错误

javascript - 无法读取未定义的属性 'ajax'

javascript - 如何将环境变量转换为JSON对象?

JavaScript 在每个父 div 之后插入 href 值

javascript - 使用 jQuery 选项卡提交表单后使用 URL 哈希刷新页面