ajax呼び出しで情報を取得するセットアップがあり、その情報の一部をすぐに別の呼び出しに使用してから、いくつかのフィールドに入力します。
問題は、匿名関数を作成して を呼び出せるようにする方法がわからないことですthis.plantName
。
現在、 の値はthis.plantName
ですundefined
。
右中括弧が抜けていることは承知していますが、混乱を招くので並べようとはしませんので、右中括弧の抜けは無視してください。
TabLinks.prototype.plantName = '';
TabLinks.prototype.init = function() {
this.updateTab('PlantDropDown', 'retrievePlants', 'retrieveAllPlants', 'tab3', function() { return this.plantName; });
};
function TabLinks() {
this.updateTab = function(entityname, wsbyid, webservicename, parentContainer, defaultValue) {
$("#" + parentContainer + "link").bind('click', function() {
$.ajax({
type: "POST",
...
success: function(result) {
myData = JSON.parse(result.d);
$.ajax({
type: "POST",
...
success: function(result2) {
...
myelem.value = JHEUtilities.testIsValidObject(defaultValue) ?
defaultValue() :
'';
更新: これが機能した解決策です。関数の2つの戻り値に気づきませんでした:
this.updateTab('PlantDropDown', 'retrievePlants', 'retrieveAllPlants', 'tab3',
function() {
var app = this;
return function() {
return function() {
return app.plantName;
}
}()
}
);
だから私はそれを次のように呼ばなければなりませんでした:
defaultValue()();