[英]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.