2013-03-29 114 views
0

我有一個rails應用程序,我試圖添加一些互動內容湯我的看法。所以我有一個用於datepicker和backbone.js的bootstrap-datepicker-rails gem來處理數據。但是,當我嘗試聆聽datepicker的'changeDate'事件時,我收到了一些錯誤。在視圖掛鉤事件不會在所有的工作,剛纔的方法不會被調用:backbone和bootstrap-datepicker

events: 
    'changeDate #dpstart': 'tryit' 

tryit: -> 
    console.log(this) 
    this 

當我試圖捕捉事件在我的路由器,我不能讓我的收藏訪問:

initialize: -> 
    @datepicker = $('#dpstart').datepicker({ 
     "format": "yyyy-mm-dd", 
     "weekStart": 1, 
     "autoclose": true 
     })  
    @datepicker.on('changeDate', @refetch, this) 

這樣,它產生一個錯誤,因爲它不能得到這個上下文,

initialize: -> 
    @datepicker = $('#dpstart').datepicker({ 
     "format": "yyyy-mm-dd", 
     "weekStart": 1, 
     "autoclose": true 
     })  
    @datepicker.on('changeDate', @refetch) 

這樣工作正常,但在@refetch我不明白backb一個上下文因此無法訪問模型。我需要做什麼?

回答

0

您可以自行將上下文綁定到this(因爲您有下劃線或lowdash)。或者使用Backbone的this method來做你的綁定(更好)。

關於爲什麼第一個沒有被調用,請確保datepicker方法返回的是你綁定它的jQuery元素($('#dpstart'))。我不這麼認爲,所以你基本上聽我假設的錯誤。

+0

ListenTo()方法看起來就像完美匹配,但它產生的錯誤與我的第二個代碼段中的錯誤相同。現在要嘗試你建議的第一種方法。 =( –

+0

雖然我仍然對第二段代碼感到困惑,你能否粘貼確切的錯誤?@TimurMinulin – Loamhoof

+0

當然。未捕獲的類型錯誤:對象#沒有方法'應用' - 其中管理員是我的路由器 this.listenTo(@datepicker,'changeDate',@tryit) - 是我使用的事件鉤子 –