2012-05-14 7 views
10

मेरे पास बैकबोन संग्रह मॉडल (तत्वों के रूप में उप-मॉडल के साथ) और इसे संपादित करने के विचार हैं।किसी नए मॉडल के लिए Backbone.sync को अक्षम करने के लिए, और सिंक सक्षम करें * उपयोगकर्ता * एक सहेजने वाला बटन

मैं इसे चाहते हैं कि जब मॉडल शुरू में बनाई गई है, "बंद" करने के लिए सिंक, तो वापस अंत है एक बटन पर उपयोगकर्ता क्लिक तक लागू कभी नहीं, तो मैं "को चालू करना चाहते हैं "सिंक, और रूट मॉडल पर विधि को सहेजने के लिए, इसे डीबी में सहेजने के लिए। एक बार मॉडल सहेजे जाने के बाद, इसे सामान्य मॉडल की तरह व्यवहार करना चाहिए।

लक्ष्य तब तक सहेजने से बचाना है जब तक कि उपयोगकर्ता निर्धारित नहीं करता कि वह से खुश है जो उसने दर्ज किया है।

उत्तर

17

बैकबोन शुरू में Backbone.sync पर जाने से पहले मॉडल के स्थानीय sync फ़ंक्शन की तलाश करेगा।

Backbone.js Documentation: सिंक समारोह Backbone.sync के रूप में विश्व स्तर पर ओवरराइड किया जा सकता है, या एक बेहतर सुक्ष्म स्तर पर, एक रीढ़ संग्रह करने के लिए या एक व्यक्ति के मॉडल के लिए एक सिंक समारोह जोड़कर।

इसलिए आप ऐसा कर सकते हैं:

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

एक बहुत तेजी से जवाब था कि, धन्यवाद! यह जानकर खुशी हुई कि यह इतना आसान है। –

संबंधित मुद्दे