簡體   English   中英

backbone.js - 使用parse而不調用fetch

[英]backbone.js - using parse without calling fetch

在頁面加載時,我通過這種技術將我的數據引導到我的集合中。 這很好用,但是我遇到了一個問題,我有子模型也需要進行投射。

例如,我返回一個名為Book的JSON集合,每個book數組包含10-20個自稱為Pages的模型。 如果我嘗試直接訪問Pages,我得到[object][object]錯誤,因為Backbone無法弄清楚它是什么類型的對象。

以前當我使用fetch ,我會通過使用包含parse操作的集合來解決這個問題。 parse我會做類似的事情:

Collection_Books = Backbone.Collection.extend({
    model: Model_Book,
    parse: function (response) {
        response.Pages = new Collection_Pages(response.Pages);
        return response;
    }
});

現在我正在直接訪問數據而不是使用fetch ,文檔意味着我不再能夠訪問parse方法。

如果我在頁面加載時沒有使用fetch或調用服務器,我如何使用Books> Pages示例來轉換子模型?

不確定這是否是新的,但看起來你也可以只將構造函數的options參數的parse屬性設置為true,從而告訴構造函數使用你的parse方法:

modelInstance = new MyModel(obj, {parse: true});

http://backbonejs.org/#Model-constructor

更新 :這個答案現已過時,請參閱uglymunky的答案 ,了解更多最新信息。


你是對的, parse 只是指定在fetch期間被調用,所以當你從原始數據構建一個集合時它不會被調用。

但是,由於您控制了用於引導集合的原始數據,因此您可以自己調用集合的parse

var c = new YourCollection(
    YourCollection.prototype.parse([
        // attribute data goes here...
    ])
);

演示: http//jsfiddle.net/ambiguous/kdaZ3/

你的parse方法(集合和模型)不應該關心它們的調用上下文,所以直接從原型調用它們應該沒問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM