簡體   English   中英

如何將自定義框架集成到骨干中?

[英]How to integrate a custom framework into backbone?

我使用PHP和此對象文字形式訪問服務器。 該對象文字將轉換為JSON,然后發送到服務器,然后在服務器中轉換回一個對象。 從那里,我閱讀了model屬性,以了解要運行哪個模型。 另外,包含的是用戶令牌,因此我知道要為其檢索模型數據的用戶。

$A.Packet.define({
    model:   null,
    client:  {},
    server:  {
        smalls:   {},
        feed:   {},
        favorites: {}
    }
});

基本上,策略是將信息編碼為對象文字,然后對其進行json編碼,發送,解碼,應用服務器邏輯並以JSON形式發送回數據。

所有這些都被抽象為正在運行

$A.Packet.push({model: self.Name});

然后pre(packet)post(packet) ajax方法自動運行。

如何將這種樣式集成到主干中?

根據Backbone的說法,我可以重寫sync()函數,但是我想在破解方法之前最好地了解如何集成事物。

我的代碼已經轉換為MV *形式,但是我正在使用虛擬數據來測試前端。 我現在想提起后端。

開發站點在這里:

http://www.arcmarks.com/dev

有關

如何覆蓋Backbone.sync? -但是,我現在還不想使用localStorage,也沒有使用它指出必須實現的4種方法。

我所有的操作都是POST JSON調用,它們在到達服務器后便會執行所需的操作。

在帶注釋的Backbone.LocalStorage源中,在文檔末尾有一個靜態方法,稱為Backbone.LocalStorage.sync別名為Backbone.localSync 這是他們編寫實現自定義同步的代碼的實際部分。

  • 然后,他們將Backbone.sync引用到Backbone.ajaxSync
  • 下一步將實施策略模式,以決定要使用哪種同步方法。
  • 最后,他們使用自定義函數覆蓋Backbone.sync以使用該策略。

這允許開發人員通過向模型根對象(在本例中為localStorage : new Backbone.LocalStorage()添加屬性來選擇哪種同步類型。 您只需要根據自己的需要實施即可。

// Create your own sync method
Backbone.customSync = function(method, model, options, error) {
    // Your custom sync code here
    return $.post('http://something.somewh.ere', model.toJSON());

    // Implementing a switch statement for the method in here would
    // be a good idea :-)
}

// Create reference to original sync method
Backbone.ajaxSync = Backbone.sync;

// Get the sync strategy
Backbone.getSyncMethod = function(model) {
    if(model.customSync || (model.collection && model.collection.customSync))
        return Backbone.customSync;

    return Backbone.ajaxSync;
};

// Overwrite Backbone.sync to call getSyncMethod() to run sync tasks
Backbone.sync = function(method, model, options, error) {
    return Backbone.getSyncMethod(model)
                   .apply(this, [method, model, options, error]);
};

現在,當模型具有作為真實值的屬性customSync ,將使用新的同步策略。

所有這些都可以進行調整以特別適合您的需求,希望能有所幫助。

暫無
暫無

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

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