2014-04-04 96 views
0
var app = {}; 

var FoodModel = Backbone.Model.extend({ 
    url: "http://localhost/food" 
}); 

var FoodCollection = Backbone.Collection.extend({ 
    model: FoodModel, 
    url: "http://localhost/food" 
}); 

var FoodView = Backbone.View.extend({ 
    render: function(){ 
     console.log(this.model.toJSON()); 
    } 
}); 

app.FoodModel = new FoodModel(); 
app.FoodCollection = new FoodCollection; 
app.FoodCollection.fetch(); 


var myView = new FoodView({model: app.FoodModel}) 

在這段代碼中,總的console.log數據返回null在this.model骨幹模型空採血後取

如果CONSOLE.LOG收集它充滿數據的,我怎麼能在視圖中獲取this.model以反映集合中的數據?

+0

後端返回什麼? – Roman

回答

1

我不確定您的應用觸發的位置是FoodView.render()。當你實例化FoodView時它不會自動發生,當json響應觸發回調到app.FoodCollection.fetch()時,它不會發生,除非您在success回調中手動調用該回調。如果你這樣做,你的上下文可能已經丟失。

此外,在您的代碼中有幾個拼寫錯誤(app.FoodCollection = new FoodCollection();)。如果不是,那麼你能提供確切的代碼嗎?請包括任何代碼調用render()

另外,我不確定您的視圖是與您的模型相關聯。請嘗試:

var FoodView = Backbone.View.extend({ 
    model: FoodModel, 
    render: function(){ 
     console.log(this.model.toJSON()); 
    } 
}); 

否則,Backbone無法知道您所指的是哪種型號。

+0

這是錯誤的,首先你所引用的模型沒有被實例化,第二個模型在創建視圖時被引用... var myView = new FoodView({model:app.FoodModel}) –

+0

不熟悉那個模式,但是你在調用'app.FoodCollection.fetch()'後將模型傳遞給構造函數,所以我不確定該關聯會如何及時發生。但是不清楚'render()'是從哪裏調用的。看到我上面的編輯要求澄清。 –