views - Backbone.js 继承 View

标签 views backbone.js inheritance

我有一个 FormView,它处理诸如保存和取消之类的事件。我还有一个 AjaxFormView,它通过 ajax 处理保存、取消和获取表单。我有一个 AssetFormView 可以处理保存、取消、通过 ajax 获取、删除和打印。 等等等等。有相当多的重复。

我在这篇文章中找到了一个帖子 http://kalimotxocoding.blogspot.com/2011/03/playing-with-backbonejs-views.html

他向您展示的地方可以扩展 View 。但是,我发现当我在页面上有多个版本的 View 时,就会有属性交叉授粉。没有内置的方式来继承主干中的 View ,那是安全的吗?

谢谢,

拉夫

* 嗯,这个东西很厚,我目前的异花授粉问题可能(可能是)我的一些错误的结果,但问题仍然存在,是不是没有和拥有某种继承 View 的方法难道不是一个重要的特性吗?

最佳答案

当您说您的属性是交叉授粉时,我想知道您的意思。

View.extend 机制运行良好。不过请注意,您是在用新功能扩展一个原型(prototype)。通过原型(prototype)继承,原型(prototype)与新实例共享它的对象。

我猜当你说你的属性是“交叉授粉”时,你实际上是在做这样的事情:

var baseModel = Backbone.Model.extend({
    defaults: {
        foo: { bar: "baz" }
    }
});

由于对象是共享的,baseModel 的每个实例最终都具有相同的 foo 对象,给人一种异花授粉的感觉。

相反,如果您将默认值定义为一个函数,那么每个实例都将获得它自己的 foo 对象副本,并且您的异花授粉将消失。

var baseModel = Backbone.Model.extend({
    defaults: function() { return {
        foo: { bar: "baz" }
    } }
});

当然,如果没有代码,我们无法确定您的问题是什么。只知道这个机制已经在社区中得到很好的使用,没有任何问题。这是安全的。您只需要了解发生了什么。

关于views - Backbone.js 继承 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7691022/

相关文章:

android - 你如何访问自定义 View 的android :layout_width and android:layout_height parameters?

javascript - Backbone 更改对象方​​法的最佳方法

javascript - Backbone ?可以.js吗?贫民窟DIY?我应该如何处理这些数据?

php - Backbone 模型保存状态

django - 在Django中获取具有继承模型的相关对象的主键

views - 为什么从 Couchbase Views 返回文档不好

iOS 在 Storyboard中切换嵌入式 View

oracle - ORACLE 11g 中的表值函数? (参数化 View )

c# - 创建对象:时出现错误 "an explicit conversion exists (are you missing a cast )"

java - Java Stacks 中是否有 popAt、peekAt,因为它继承自其他类?