2015-07-10 16 views
6

यहां एक example है जो रिबैक्ट के साथ बैकबोन का उपयोग करता है।बैकबोन में मॉडल के बारे में भ्रम + प्रतिक्रिया अनुप्रयोग

वह परिभाषित करता है एक Model: var _todos = new Backbone.Model();

और फिर यह करने के लिए दो कार्य जोड़ता है: क्यों areAllComplete एक Model करने के बजाय एक Collection करने के लिए लागू किया जा रहा है

var TodoStore = _.extend(_todos, { 
    areAllComplete: function() { 
    return _.every(_todos.keys(), function(id){ 
     return _todos.get(id).complete; 
    }); 
    }, 
    getAll: function() { 
    return _todos.toJSON(); 
    } 
}); 

मैं क्या समझ में नहीं आता है।

यह Collection में कोई फ़ंक्शन नहीं होना चाहिए जो इसके सभी मॉडल प्राप्त करेगा और complete विशेषता देखें।

इसी तरह, मैं Collection से संबंधित होने की अपेक्षा करता हूं - इसके सभी मॉडल प्राप्त करें।

यह उदाहरण Collection को Model के साथ प्रतिस्थापित करने लगता है।

शायद मैं पूरी तरह समझ नहीं पा रहा हूं कि मॉडल का उपयोग कैसे किया जाता है।

+1

मुझे समझ में नहीं आता कि आप बैकबोन और फ्लक्स क्यों मिश्रण करेंगे। – Mathletics

+1

पुन: मॉडल बनाम संग्रह, यह इस बात पर निर्भर करता है कि आप उन्हें सर्वर पर कैसे स्टोर करते हैं। यह यहां प्रतीत होता है कि मॉडल वास्तव में टोडोस का _list_ है, जिसे प्रत्येक आइटम को उस मॉडल पर एक विशेषता के रूप में जाना जाता है। पूरी बात मेरे लिए बहुत मूर्खतापूर्ण प्रतीत होती है। – Mathletics

+0

@ मैथलेटिक्स एक कारण है कि मुझे दोनों का एक साथ उपयोग क्यों नहीं करना चाहिए? प्रतिक्रिया सिर्फ "एमवीसी में वी" है, है ना? मैं रूटिंग और स्टोर के लिए बैकबोन का उपयोग करना चाहता हूं। मैं इस [दृष्टिकोण] पर विचार कर रहा हूं (http://www.toptal.com/front-end/simple-data-flow-in-react-applications-using-flux-and-backbone)। – pushkin

उत्तर

2

यह उदाहरण मेरी राय में काफी व्यापक तरीके से Backbone.Model का उपयोग कर रहा है।

This जहां यह दुकान के लिए नए सब जोड़ने वाली है:

var id = Date.now(); 
    _todos.set(id, { 
    id: id, 
    complete: false, 
    text: text 
    }); 
} 

क्या यह मूल रूप से कर रहा है Model की एक विशेषता के रूप में हर कार्य करने आइटम स्थापित कर रही है, विशेषता नाम के रूप में आईडी का उपयोग कर। यह

नीचे
{ 
    "1436600629317": { 
    "id": 1436600629317, 
    "complete": false, 
    "text": "foo" 
    }, 
    "1436600629706": { 
    "id": 1436600629706, 
    "complete": false, 
    "text": "bar" 
    } 
} 

एक ही आउटपुट आप _todos.toJSON() से मिलता है यही कारण है कि जैसे कुछ देख _todos.attributes साथ समाप्त होता है। मुझे नहीं पता कि उन्होंने इसे इस तरह कार्यान्वित करने का फैसला क्यों किया, अगर वे बैकबोन का उपयोग करने का प्रयास कर रहे थे। सिंक वे एक सर्वर एपीआई के साथ समाप्त हो जाएंगे जो वास्तव में बिल्कुल सही नहीं है। बैकबोन प्रदान करता है किसी भी चीज का लाभ उठाए बिना बैकबोन का उपयोग करना अजीब लगता है। change ईवेंट here का संदर्भ है लेकिन मुझे यह कहीं भी उपयोग नहीं किया जा रहा है। आप किसी भी नियमित जेएस ऑब्जेक्ट का उपयोग करके उस स्टोर को आसानी से पुनः कार्यान्वित कर सकते हैं।

एकमात्र चीज जो उदाहरण वास्तव में बैकबोन से उपयोग कर रही है वह प्रेषक में Backbone.Events है। आप पूरी तरह से सही हैं कि संग्रह का उपयोग करने से रास्ता अधिक समझ जाएगा क्योंकि आप वास्तव में इसे एक आरईएसटी आधारित सर्वर एपीआई से बात कर सकते हैं। ऐसा उदाहरण बैकबोन का उपयोग करने के लिए केवल बैकबोन का उपयोग करना प्रतीत होता है।

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