2013-04-04 63 views
2

有一個腳本(js),我希望像$(document).ready()那樣運行。有一種方法可以在模板(例如,home_tpl.html)文件中編寫腳本。但我相信這不是一個好方法。骨幹|文檔準備腳本

我從骨幹視圖加載html。我沒有使用任何其他包裝像marionate。這裏我希望在加載模板(DOM被加載)時運行一些腳本。我可以用哪種方式編寫腳本?

這裏是來看

reset: function(key, email){ 
    require(['js/views/reset_password', 'js/models/forgot_password'], function(ResetView, ResetModel){ 
     var resetModel = new ResetModel(); 
     resetModel.set('key', key); 
     resetModel.set('email', email); 
     $('body').html(new ResetView({model: resetModel}).render().el); 
    }); 
    }, 

這裏渲染視圖代碼

define(['text!tpl/reset_passwordtpl.html'],function(Template){ 

return Backbone.View.extend({ 
    template: _.template(Template), 
    render: function(){ 
     $(this.el).html(this.template()); 
     return this; 
    }, 
    events: { 
     "click #btn_reset_password": "reset" 
    }, 
    reset: function(){ 
     if($('#reset_password').val() != $('#confirm_reset_password').val()){ 
      $('#error_message').text('Passwords mismatched').show(); 
     } 

     else{ 
      $.ajax({ 
       url: server_url + 'reset', 
       type:'POST', 
       dataType:"json", 
       data: {'id': this.model.get('email'), 'key': this.model.get('key'), 'new_password': $('#reset_password').val()}, 
       success:function (data) { 
        if(data.error) { // If there is an error, show the error messages 
         $('.alert-error').text(data.error.text).show(); 
        } 
        else { // If not, send them back to the home page 
         $("#content").html("<h6>Your password is reset. Click <a href='#login'>here</a> to login.</h6>"); 
        } 
       } 
      }); 
     } 
    } 
}); 
}); 

感謝

+0

如果您的代碼正在加載模板,那麼您知道什麼時候加載了「DOM」,難道您不知道(是在將內容添加到頁面之後)。視圖應該包含腳本,而不是模板。 – WiredPrairie 2013-04-04 12:36:16

+0

我正在渲染視圖並且視圖正在加載模板。我認爲它在內部加載它,當模板被加載時我無法找到一個點。 – 2013-04-04 12:54:08

+0

你是如何渲染視圖?它在Backbone中不是自動的。您需要調用render,並且在'render'中,例如,可以使用下劃線的模板編譯器來創建HTML,然後將其插入到DOM中。請編輯您的問題,以包括有關您困惑的地方的詳細信息。 – WiredPrairie 2013-04-04 14:31:55

回答

-1

某處你應該有一個主視圖。還包括樣式表等。在正文結束標記之前的頁面底部。在一些腳本標記中,只需執行document.ready事情。除非這也是在模板中,在這種情況下,我會考慮在涉及視圖時使用不同的結構。

如果您只是想在一個模板準備好加載時執行此操作,我會使用具有匿名函數的succes。