2012-05-14 29 views
10

Tôi có mô hình bộ sưu tập Backbone (với các mô hình phụ làm thành phần) và chế độ xem để chỉnh sửa.Cách tắt Backbone.sync cho mô hình mới và bật lại đồng bộ * sau * người dùng nhấn nút lưu

Tôi muốn nó rằng khi mô hình được tạo ra ban đầu, để "tắt" đồng bộ, vì vậy khi kết thúc lại là không bao giờ gọi cho đến khi người dùng nhấp vào một nút , sau đó tôi muốn "bật "đồng bộ hóa, và gọi phương thức lưu trên mô hình gốc, để lưu nó vào DB. Khi mô hình được lưu, mô hình sẽ hoạt động như mô hình bình thường.

Mục tiêu là tránh tiết kiệm cho đến khi người dùng xác định rằng anh ấy hài lòng với những gì anh ấy đã nhập.

Trả lời

17

Xương sống ban đầu sẽ tìm hàm sync cục bộ của mô hình trước khi đi tới Backbone.sync.

Backbone.js Documentation: Chức năng đồng bộ hóa có thể được overriden toàn cầu như Backbone.sync, hoặc tại một mức chi tiết hơn, bằng cách thêm một chức năng đồng bộ hóa với một bộ sưu tập Backbone hoặc một mô hình cá nhân.

Vì vậy, bạn có thể làm điều này:

var MyModel = Backbone.Model.extend({ 
    // New instances of this model will have a 'dud' sync function 
    sync: function() { return false; } 
}); 

var MyView = Backbone.View.extend({ 

    ... 

    events : { 
     'click #my-button' : 'enableSync', 
     'click #my-save-button' : 'saveModel' 
    }, 

    enableSync: function() { 
     // If this view's model is still pointing to our fake sync function, 
     // update it so that it references Backbone.sync going forward. 
     if (this.model.sync !== Backbone.sync) { 
      this.model.sync = Backbone.sync; 
     } 
    }, 

    saveModel: function() { 
     // This won't actually do anything until we click '#my-button' 
     this.model.save(); 
    } 

    ... 

}); 

var view = new MyView({ model: new MyModel() }); 
+0

Đó là một câu trả lời rất nhanh, cảm ơn! Vui mừng khi biết rằng nó đơn giản. –

Các vấn đề liên quan