2013-02-11 6 views
1

Я хотел бы объявить глобальную переменную в моем JS-файле, и я бы хотел использовать эту переменную в разных функциях в том же классе. Я объявил переменную в инициализации секцииОбъявить общедоступные переменные в Handlebar 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
this.regionid=""; 
initialize: function() { 
//some code 
} 

I подумайте, что вам нужно объявить вот так ... тогда он будет работать. Вы можете назначить значения для переменной в любой функции.

+0

Большое спасибо, он работает !!! –

0

this внутри обратного вызова $.each не будет ссылаться на view (или объект, который содержит файл js).

В Initialize вы можете связать 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) 
} 

Он должен работать.

Смежные вопросы