backbone.js - Is it possible to remove a model by cid? -


मुझे प्रविष्टि नाम से एक दृश्य है।

  class movies .Views.Entry बैकबोन विस्तारित करता है। देखें टेम्प्लेट: जेएसटी ['फिल्म इट्स / एंट्री'] क्लासनाम: 'मूवी फ्रेम' आरंभ: - & gt; @ Collection.on ('change', @render, this) @ collection.on ('remove', @render, this) प्रस्तुत करना: - & gt; $ (@ एएल)। एचटीएमएल (@ टेम्पलेट (एंट्री: @collection)) इस इवेंट: - & gt; ".remove पर क्लिक करें": "removeEntry" निकालें हटाएं: (e) - & gt; Console.log @collection  

यह दृश्य एक प्रविष्टियां टेम्पलेट बनाता है।

  & lt; div data-id = "& lt; % = @ Entry.get ('id')% & gt; "& gt; & Lt; p & gt; & lt;% = @ entry.get ('शीर्षक')% & gt; & lt; / p & gt; & Lt; p & gt; & lt;% = @ entry.get ('id')% & gt; & lt; / p & gt; & Lt; p class = "remove" & gt; निकालें & lt; / p & gt; & Lt; / div & gt;  

मैं क्या करना चाहता हूं संग्रह से एक मॉडल को निकालना है (फिल्मों) और उसके बाद टेम्पलेट को फिर से प्रस्तुत करना। अगर मैं एक प्रविष्टि पर क्लिक करता हूं तो मैं console.log @collection ईवेंट को आग लगाऊंगा। यह निम्नलिखित लॉग करता है,

  Backbone.Model {CID: "सी 4", गुण: ऑब्जेक्ट, संग्रह: Movieseats, _changing: झूठे, _previousAttributes: ... वस्तु}  

मैं मॉडल की सीआईडी ​​को कैसे लक्षित करूँगा और फिर इसे संग्रह से हटाऊँगा?

अपडेट

अगर मैं इस कोड का उपयोग करता हूं, तो

<पूर्व> निकालेंइंटर्री: (ई) - & gt; Thisid = $ (e.currentTarget) .clostest ('div')। डेटा ('id') console.log @collection modelToRemove = @ collection.findWhere ({cid: thisid}); @ Collection.remove (modelToRemove);

मैं हो कंसोल लॉग में निम्न परिणाम

  Backbone.Model {CID:। "सी 4", गुण: ऑब्जेक्ट, संग्रह: Movieseats, _changing : झूठे, _previousAttributes: ऑब्जेक्ट ...} _changing: false_events: Object_pending: false_previousAttributes: Objectattributes: Objectchanged: Objectcid: "सी 4" संग्रह: Movieseatsid: 531__proto__: Uncaught TypeError वस्तु: अपरिभाषित कार्य नहीं है  

समस्या इस हिस्से हो रहा है,

  modelToRemove = this.collection  

आप इस कोड का उपयोग यह कर सकते हैं (विधि देखें):

  वर modelToRemove = collection.findWhere ({CID: "SOME_ID_HERE"}); collection.remove (modelToRemove);  

डॉक्स भी देखें।

संपादन

console.log विधि के आउटपुट से यह प्रकट होता है कि आपके उपरोक्त कोड में @collection वेरिएबल एक सच्चा बैकबोन नहीं है। संकलन, बल्कि एक मॉडल जो संग्रह को इंगित करता है। इस प्रकार, आप होना करने के लिए ऊपर दिए गए कोड को संशोधित करना चाहिए:

  trueCollection = @ collection.get ( "संग्रह") // या @ collection.collection modelToRemove = trueCollection.findWhere (सीआईडी: "SOME_ID_HERE" ) सचक्लॉक्शन.रेवल (मॉडलटोमवॉव)  

Comments