[英]Passing the parameters to a callback function : Scope issue
我在骨干应用程序的视图中有这个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
到anotherFunction
访问anotherFunction
?
谢谢。 !
如果不确定: paramC
是否可用- return thisView.anotherFunction(ans, thisView.paramC)
。
那么答案是-是的,该语句中有paramC
。
原因-此处定义的回调函数会记住创建它的环境。 这个想法类似于闭包。 在此处阅读有关闭包和词法范围的信息
但是,如果您的问题是有关如何在anotherFunction
方法的主体内部访问paramC
的,那么您可以按照第一个答案中的描述进行操作。 或者,您可以创建视图对象的新属性并为其分配paramC
。
最后一件事-javascript具有功能范围。 您可以在此处阅读有关javascript作用域的信息 。
希望能帮助到你。
试试这个
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);
要公开内部函数和变量,您需要从第一个函数返回某些内容。 最好将它们包装在return语句中。
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);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.