1

JS ファイルでグローバル変数を宣言し、その変数を同じクラスの別の関数で使用したいと考えています。初期化セクションで変数を宣言しました

       initialize: function () {              
                    this.regionid="";
    } 

          selectItems: function ()
                {

                this.regionid="10";
                this.Regions.url = this.Regions.url() + '?requesttype=1';
                this.Regions.fetch({ success: this.renderRegion });


    }

   renderRegion: function () {
            var ddlRegionClass = this.Regions.toJSON();
            $(this.el).find('[id=cboRegion] option').remove();          
            $.each(ddlRegionClass.LOCATIONS_Regions, function (j, cc1) {
                var data = 'data='+cc1.AreaCode_2;
                  var selected = '';                   
                    if(cc1.AreaCode_3==this.regionid)
                            selected="selected";                

                $('[id=cboRegion]').append('<option value="' + cc1.AreaCode_3 + '" ' + data + selected + '  >' + cc1.Area_Name + '</option>');
            })
        },

値を確認している間

 if(cc1.AreaCode_3==this.regionid) 

値を取得できませんでした。「未定義」と表示されています

4

2 に答える 2

2
this.regionid="";
initialize: function () {  
//some code
}

このように宣言する必要があると思います..そうすれば機能します..任意の関数で変数に値を割り当てることができます.

于 2013-02-11T04:48:20.427 に答える
0

thisのコールバック内では(または js ファイルに含まれているオブジェクト) を$.each参照しません。view

renderRegion初期化では、次のようにバインドできますthis

initialize: function() {
  this.regionid = "";
  _.bindAll(this, "renderRegion");
}

そして内部renderRegion

renderRegion: function() {
  // before doing $.each store 'this' reference
  var _this = this;

  // and inside the callback use if(cc1.AreaCode_3 == _this.regionid)
}

それはうまくいくはずです。

于 2013-02-11T06:36:22.350 に答える