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的回调内部$.each不会引用view(或js文件包含的对象)。

在初始化中,您可以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 回答