2013-10-17 94 views
0

在Backbone.js中,我如何檢索提取完成後由模型函數返回的可見性?據我所知,模型不能與視圖進行通信,那麼視圖怎樣才能監聽模型特定的函數獲取?模型完成提取後,骨幹視圖獲取模型變量

謝謝!

我試圖做到這一點可以看到下面(如果你看到的代碼錯誤,不介意他們,我寫了這是什麼,我試圖做一個例子):

var ScheduleModel = Backbone.Model.extend({ 
     urlRoot: '/api/schedule/1', 
     getSubjectData: function(){ 
      this.fetch({ 
       success: function(data, scheduleData){ 
        return scheduleData; 
       } 
      }); 
     } 
}); 

var ScheduleView = Backbone.View.extend({ 
    initialize: function(){ 
     console.log(this.model.getSubjectData()); 
    } 
}); 
+0

您在讀取完成後是否仍然有觸發函數的問題? –

回答

3

你可以聽幾個模型事件與listenTo

http://backbonejs.org/#Events-listenTo

因爲model.fetch觸發「變」事件(http://backbonejs.org/#Model-fetch)在您的視圖代碼有些類似:

var ScheduleView = Backbone.View.extend({ 
    initialize: function(){ 
     console.log(this.model.getSubjectData()); 
     this.listenTo(this.model, 'change', this.doSmthng); 
    }, 
    doSmthng: function() { 
     // .... 
    } 
}); 

應激發doSmthng模型的提取完成。

1

你可以這樣做fetch裏面的看法。

var ScheduleView = Backbone.View.extend({ 
    initialize: function(){ 
     this.model.fetch({success: function() { 
      //you can do your stuff here. 
      //Try to get model data using `model.get`. 
     }});  
    } 
} 

,並

As I understand the model cannot communicate with the view. 

這是不對的。你可以在你的view裏面這樣設置。

this.model.view = this; 

並且您可以像訪問您的模型一樣訪問視圖。

this.view 

但在我的應用程序中,我沒有這樣做。訪問模型內​​部的視圖將會破壞主幹網的目的。