我有一个 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/