2012-08-14 96 views
0

我們正在使用backbone集合從文件中加載JSON。現在,如果我採用相同的文件內容並將其放入一個數組並調用一個url函數,似乎沒有任何工作..你能請幫助..Backbone Collection URL函數

var cool = {}; 
cool.Item = Backbone.Model.extend({}); 
cool.Items = Backbone.Collection.extend({ 
     model: cool.Item, 
       url: "data.json" 

此代碼的工作

var cool = {}; 
cool.Item = Backbone.Model.extend({}); 
cool.Items = Backbone.Collection.extend({ 
     model: cool.Item, 
       url: this.return(cool_cont()); 

function cool_cont() 
{ 
* JSON object* 
} 

這個代碼不工作..

+0

是不是'返回'一個保留字? – stusmith 2012-08-14 09:33:02

+0

should this this.return(cool_cont()not be this.cool_cont()instead?什麼是* JSON對象*究竟是什麼?請發佈完整代碼。 當您說「不工作」時,究竟發生了什麼? – schacki 2012-08-14 09:38:28

回答

2

你在這個邏輯有一些謬誤。這裏工作的例子是你定義url-attribute爲data.json。當你獲取時會發生什麼,是Backbone爲該URL創建一個ajax-請求(絆倒你的文件),並返回那裏的內容(你的json數據)。

現在你的第二次嘗試是一切都出錯的地方。首先:

url: this.return(cool_cont()); 

我不知道這是幹什麼(或者更可能不會),我不想知道。鏈接屬性/功能的基本前提是,它是從Backbone.js docs(真實的故事)意味着

Set the url property (or function) on a collection to reference its location on the server.

-Quote

所以,你在這裏做什麼是你傳遞你想要的數據,把你的收藏集作爲它在服務器上的位置的參考(坦率地說,我認爲你甚至沒有這樣做),這顯然是錯誤的。

所以URL ==所述path_to_your_data_be_it_url_or_file

URL可以是一個字符串(又名靜態路徑)或功能(例如創建使用該模型的某些屬性作爲其部分路徑)。

如果要插入一些虛假數據到您的收藏,你不想與一個外部文件來做到這一點,像這樣做:

var json_data = [ 
    {"foo": "bar"}, // model 1 
    {"foo": "bar2"}, // model 2 
    ... 
    {"foo": "barN"}, // model N 
]; 

var options = {...}; // optional 

var myCollection = new MyCollection(json_data, options); 

希望這有助於!

+0

感謝jakee ,這真的有助於 – Jayanth 2012-08-14 11:12:13

+0

嗨@jakee - 我面臨着同樣的問題,並希望你能幫助我需要運行一些測試,並在頁面中插入一些「虛假」數據(按照你的例子)我創建了一個json對象「json_data」,但我仍然收到以下錯誤: **必須指定一個「url」屬性或函數** 不確定要添加到URL屬性的內容以下是我的代碼示例http: //jsfiddle.net/QKCgJ/ – John 2013-03-06 00:58:58