举个例子,这就是我要做的......
function doSomething(customParameter) {
console.log(customParameter);
}
var MyView = Backbone.View.extend({
// Other view stuff, skipping it...
events: {
'click .someClass': doSomething(customParameter)
}
});
这里的动机是我希望能够将变量(视图的本地)传递给视图外的其他函数。我想这样做的原因是“其他功能”只写了一次而不是四次......它会严重地保存我的项目超过100行代码。
经过大量谷歌搜索后,我还没有找到解决方案...任何想法?
谢谢!
答案 0 :(得分:5)
这是一种方法:
function doSomething(customParameter) {
console.log(customParameter);
}
var MyView = Backbone.View.extend({
// Other view stuff, skipping it...
events: {
'click .someClass': function(ev) { doSomething(this.customParameter); }
}
});
在此示例中,您声明了一个函数,该函数将本地视图所需的参数传递给该doSomething
方法。
另一种方法是使用当前视图的上下文调用doSomething(),如果你不想传递所有必需的参数:
function doSomething(ev) {
console.log(this.customParameter); // here, the context this will be the view.
}
var MyView = Backbone.View.extend({
// Other view stuff, skipping it...
events: {
'click .someClass': function(ev) { doSomething.call(this, ev); }
}
});
更多的OOP方法是为该公共代码提供基本视图:
var MyBaseView = Backbone.View.extend({
doSomething: function(ev) {
console.log(this.customParameter);
}
});
var MyView = MyBaseView.extend({
extends: {
'click .someClass': 'doSomething'
}
});
可能有更多方法可以做到这一点,您只需要看看哪种方案最适合您的需求。
答案 1 :(得分:3)
您可以尝试调用视图内部的方法来调用相关方法
var MyView = Backbone.View.extend({
// Other view stuff, skipping it...
events: {
'click .someClass': 'callSomething'
},
callSomething: function() {
doSomething(customParameter);
}
});