gpt4 book ai didi

backbone.js - 子类化 Backbone.View

转载 作者:行者123 更新时间:2023-12-01 01:21:02 26 4
gpt4 key购买 nike

我有几个具有公共(public)代码的 View ,我想将其抽象为自定义 Backbone.View 类。有没有这样做的最佳实践?

做这样的事情是一个很好的模式吗? :

 // Base Grid view
var GridView = Backbone.View.extend({
initialize : function(){
//common view init code ..

//do the plug in overrides
if (options.addHandler)
this.addHandler = options.addHandler;
if (options.events)
//?? extend default events or override?
this.events = $.extend(this.events, options.events);
},
addHandler : function() {
//defaulthandler this code can be overridden
});
});


// in another object create some views from the GridView base
....
var overrides = { events:"xxx yyy", el: ulElement addHandler: myAddFunction }
var UserList = GridView.extend(overrides)
var userList = new UserList(users, options);
....

var coursesOverrides : {addHandler: ...}
var coursesOptions: {el: courseElement, ...}
var CourseList = GridView.extend(coursesOverrides)
var courseList= new CourseList (courses, coursesOptions)

// along the same lines maybe there's an abstraction for toolbar views
var ClassToolbarView = ToolbarBase.extend(toolOverrides)
var classtoolbar = new ClassToolbarView(actions, toolbaropts)

任何指向扩展 View 以重构通用 View 代码的良好示例的指针都值得赞赏。

最佳答案

首先,我没有看到您的 initializer() 中传递的选项。 ,所以这是一个错误。

其次,.extend()方法被继承:

var GridView = Backbone.View.extend({ ... })
var GridViewWithNewFunctionsAndEvents = GridView.extend({ ... })

您可以替换或扩展 GridView 的功能,并调用 new GridViewWithNewFunctionsAndEvents()并在您需要的新对象中获得额外的功能,就像您扩展 Backbone stock View 类一样。

如果你需要扩展初始化器,你可以这样做来调用父类(super class)的初始化器:
 var GridViewWithNewFunctionsAndEvents = GridView.extend({
initializer: function(options) {
GridView.prototype.initializer.call(this, options);
/* Your stuff goes here */
}
});

关于backbone.js - 子类化 Backbone.View,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9204021/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com