在Handlebar JS中声明公共变量

时间:2013-02-11 04:34:08

标签: javascript backbone.js global-variables

我想在我的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) 

我没有得到价值,它显示'未定义'

2 个答案:

答案 0 :(得分:2)

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

我认为你必须像这样声明..然后它会起作用..你可以在任何函数中为变量赋值。

答案 1 :(得分:0)

this回调中的

$.each将不会引用view(或js文件所包含的对象)。

在初始化中,您可以将renderRegionthis绑定:

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)
}

它应该有用。