gpt4 book ai didi

javascript - Backbone.js 和继承方法

转载 作者:行者123 更新时间:2023-11-30 17:20:21 24 4
gpt4 key购买 nike

我想知道如何在 Backbone.View 代码中使用函数。有人可以建议/告诉我这是如何正确完成的。我知道扩展只放在 var 中。我看过 extend、prototype、super、parent、baseview 和其他奇特的东西。但这只会让我更加困惑;)。

var jsHelpers = {
intVar: 300,
sum: function(a, b, callback) {
// do something interesting:
c = a + b;
d = c + intVar;
callback(c);
} //end sum function
} //end jsHelpers

/* somewhere else */
ViewThingy = Backbone.View.extend({
initialize: function() {
this.render();
},
render: function() {
var result = jsHelpers.sum(1, 1, function(callbackData) {
//let's do something with the return stuff:
this.$el.html(callbackData);
}); //end jsHelpers
} // end render
}); //end extend

错误当然是 jsHelpers.sum(); 函数在 extend 中不可用。

TIA!文斯

最佳答案

var View = Backbone.View.extend({
hello: function() {
console.log('hello');
},

// You can also override Backbone methods here.
initialize: function() {
// Do init code shared by all your views
}
});

// All the views in your app should extend off this view instead of Backbone.View.
var RandomView = View.extend({
initialize: function() {
// Call the parent to do init code.
View.prototype.initialize.apply(this, arguments);

this.hello();
},

// You can override methods too..
hello: function() {
// You can call the parent.
View.prototype.hello.apply(this, arguments);
}
});

实际上,在制作应用时始终扩展 View、Model、Collection 和 Router 是一个好主意,因为总会有一些共享功能是您想要做的,而不是在您的应用中到处重复相同的代码。通常对于一个 View ,这将是类似于渲染例程的东西,例如渲染模板和渲染 subview ——您不希望在您的应用程序的每个 View 中再次执行该逻辑。

通常要共享其他代码,您会使用 RequireJS 或 Browserify 等依赖项管理器。但是你也可以有一个全局对象:

window.app = {};

并附加一些东西:

window.app.utils = ....;

可以从任何地方访问。拥有一个 app 对象是很常见的——例如您通常会有一个模型在 app.state 维护应用程序的状态。

关于javascript - Backbone.js 和继承方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25247059/

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