我在骨干应用的视图中有这个someFunction
。现在我想将此函数中定义的参数发送到jConform函数的回调函数。在这种情况下,我无法弄清楚范围是如何工作的。
someFunction: function() {
var thisView = this,
paramA = 10,
paramB = $(ev.currentTarget).data("id"),
paramC = this.getConfig(paramB);
jConfirm(paramC.jConfirmMessage, "Confirm Deactivation", function (ans) {
return thisView.anotherFunction(ans, paramC);
});
}
anotherFunction: function(ans, paramC){
...
}
如何从sumeFunction
访问paramC到anotherFunction
?
感谢。 !
答案 0 :(得分:1)
如果您不确定:paramC
是否可用return thisView.anotherFunction(ans, thisView.paramC)
。
然后回答是 - 是的,paramC
在该陈述中可用。
原因 - 此处定义的回调函数会记住创建它的环境。这个想法类似于封闭。阅读关闭和词汇范围here
但是,如果您的问题是关于如何在paramC
方法的正文中访问anotherFunction
,那么您可以执行第一个答案中所述的操作。或者,您可以创建视图对象的新属性并为其指定paramC
。
最后一件事--javascript具有功能范围。您可以阅读有关javascript范围here的信息。
希望它有所帮助。
答案 1 :(得分:0)
试试这种方式
someFunction: function() {
//private
var that = this;
jConfirm(paramC.jConfirmMessage, "Confirm Deactivation", function (ans) {
return thisView.deactivateConfirm(ans, paramC);
});
return {
//public
thisView : that,
paramA : 10,
paramB : $(ev.currentTarget).data("id"),
paramC : that.getConfig(paramB)
};
}
anotherFunction: function(ans, paramC){
//use it here
}
anotherFunction(ans, someFunction.paramC);
有用的链接 first link second link
答案 2 :(得分:-1)
公开你需要从第一个函数返回内容的内部函数和变量。将它们包装在退货声明中是好的。
someFunction: function() {
var thisView = this;
thisView.paramA = 10;
thisView.paramB = $(ev.currentTarget).data("id");
thisView.paramC = this.getConfig(paramB);
return {
paramA : thisView.paramA,
paramB : thisView.paramB,
paramC : thisView.paramC,
jConfirm: function(thisView.paramC.jConfirmMessage, "Confirm Deactivation", function (ans)) {
return thisView.anotherFunction(ans, thisView.paramC)
}
}
}
anotherFunction: function(ans, paramC){
console.log(someFunction.paramC);
}