2013-02-21 39 views
5

मैं एक तालिका में एक पूरा संग्रह प्रदर्शित करते हैं, और साथ में जगह संपादन योग्य प्रत्येक पंक्ति में "नाम" फ़ील्ड करना चाहते हैं X-editableमैं उल्का टेम्पलेट में गतिशील फ़ील्ड पर एक्स-संपादन योग्य का उपयोग कैसे करूं?

संपादन योग्य का उपयोग कर तालिका में हर नाम के साथ संलग्न किया जा सकता है हाल ही में जोड़ी " चयनकर्ता "विकल्प:

$('#collectionTable').editable({ 
    selector: '.editable-click', 
}); 

// I also need to setup a 'save' callback to update the collection... 

$('a.editable-click').on('save', function(e, params) { 
    console.log('Saved value: ' + params.newValue); 
    // TBD: update the collection 
}); 

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

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

जाहिर है मैं इस गलत कर रहा हूँ, लेकिन मुझे यकीन है कि जहां सही जगह संपादन योग्य कॉल करने के लिए और पर है नहीं कर रहा हूँ ('सहेजें', समारोह())?

उत्तर

2

संपादन योग्य कॉलिंग के बाद हर प्रतिपादन (हालांकि मैं मेमोरी लीक कारण हो सकता है की कल्पना) विश्वसनीय लगता है। लेकिन आप की तरह 'सहेजें', आप सभी मौजूदा घटनाओं निकल करने के लिए सुनिश्चित किया जाना चाहिए घटनाओं के लिए बाध्य करना चाहते हैं, अन्यथा आप बाध्यकारी नया रखेंगे हर प्रतिपादन पर घटनाओं को बचाने अगर:

Template.editableTable.rendered = function() { 

    $('#myParentTable').editable({ 
     selector: '.editable-click' 
    }); 

    $('a.editable-click').unbind('save').on('save', function(e, params) { 
     // Make changes to your collection here. 
    }); 

    }; 

मैं केवल पर संपादन योग्य बुला के साथ प्रयोग टेम्पलेट का पहला प्रतिपादन। यह तब तक काम करता है जब तक आप इसे फिर से कॉल करना सुनिश्चित करते हैं यदि टेम्पलेट कभी नष्ट हो जाता है (उदाहरण के लिए राउटर का उपयोग करना जो गतिशील रूप से टेम्पलेट्स को बनाते और नष्ट करते हैं)। लेकिन कुछ किनारे के मामले थे जहां यह काम नहीं कर रहा था, इसलिए मैं प्रत्येक प्रतिपादन के बाद संपादन योग्य कॉल करने के लिए वापस लौट आया हूं।

0

क्या आप अभी याद नहीं कर सकते हैं कि आप पहले ही संपादन योग्य और ईवेंट श्रोता सेट कर चुके हैं और यदि आपके पास पहले से है तो ऐसा नहीं करते?

if (editable) { 
// enable editable and add the save listener 
// ... 
editable = true; 
} 
+0

यह उससे थोड़ा सा ट्रिकियर है, क्योंकि संपादन योग्य प्रत्येक डोम नोड पर चलाना है। इसलिए मुझे प्रत्येक नोड के माध्यम से फिर से चलना होगा और संपादन योग्य और ('सेव') चलाने से पहले इसकी स्थिति जांचनी होगी। यह एक समाधान है; मुझे यकीन नहीं है कि यह सबसे अच्छा है या नहीं। – jpeskin

0

अगर मैं कर सकता तो मैं एक टिप्पणी छोड़ दूंगा, लेकिन मेरे पास अभी केवल 2 9 रेप है। कितना दर्द। वैसे भी।

मेरे पास मेटीर 0.7.2 में एक्स-संपादन योग्य काम था, लेकिन 0.8.0 तक अपग्रेड करने के बाद से यह सही ढंग से प्रस्तुत नहीं करता है। मैं खाली टैग के गुच्छा के साथ खत्म होता है। यह निराशाजनक है क्योंकि डेटा वहां है, केवल उस समय तक नहीं जब तक प्रस्तुत किए गए फ़ंक्शन को निकाल दिया जाता है।

सबसे अच्छा तरीका है कि केवल एक बार आग गाया और सुनिश्चित करें कि डेटा नहीं है नहीं है एक्स-संपादन योग्य उपयोग करने के लिए अब क्या है।

मैं आयरन रूटर उपयोग कर रहा हूँ और मेरे टेम्पलेट एक {{#each}} ब्लॉक जो नए गाया मॉडल के लिए बुनियादी समाधान लगता में सम्मिलित नही कर रहे हैं।