मैं UI.render() और UI.insert() का उपयोग करके टेम्पलेट्स डाल रहा हूं।उल्का में डाला गया टेम्पलेट निकालें 0.8.0
जब मैंने डाले गए टेम्पलेट को हटाने का प्रयास किया, तो यह स्मृति में रहना प्रतीत होता है और नष्ट विधि को नहीं कहा जाता है।
प्रलेखन के अनुसार, यदि मैं तत्व को निकालने के लिए jquery का उपयोग करता हूं तो इसे संपत्ति को साफ करना चाहिए।
test.html:
<head>
<title>removeTest</title>
<style>
#content {
height: 500px;
width: 500px;
background-color: gray;
}
</style>
</head>
<body><div id="content"></div></body>
<template name="foo"><div id="{{id}}">Foo</div></template>
test.js:
if (Meteor.isClient) {
UI.body.events({
"click": function(event) {
var instance = UI.renderWithData(Template.foo, { });
UI.insert(instance, $("#content")[0]);
}
});
Template.foo.created = function() {
this.data.id = "handle";
var self = this;
this.x = setInterval(function() { console.log("running...") }, 1000);
setTimeout(function() { $("#handle").remove() }, 1000);
};
Template.foo.destroyed = function() {
// never called.
clearTimeout(this.x);
};
}
क्या मैं गलत क्या किया
मैं निम्नलिखित कोड का उपयोग कर परीक्षण कर रहा हूँ?
धन्यवाद।
क्या आप हैंडलबार के बजाय मैन्युअल रूप से टेम्पलेट को प्रतिपादित क्यों कर रहे हैं, इस बारे में अधिक जानकारी प्रदान कर सकते हैं? त्रुटि के लिए अपने ब्राउज़र कंसोल की जांच करें जैसे कि "अनकॉट टाइप एरर: नल की संपत्ति 'आईडी' सेट नहीं कर सकता है। 'UI.render' फ़ंक्शन' डेटा' संदर्भ को 'शून्य' पर सेट करता है। आप शायद इसे 'UI.renderWithData' के साथ काम कर सकते हैं, लेकिन मुझे संदेह है कि हैंडलबार्स का उपयोग करके एक और अधिक सुरुचिपूर्ण समाधान है और उल्का को सामान्य स्तर के रूप में निचले स्तर के प्रतिपादन को संभालने देना है। – sbking
मैं एक ऐप लिख रहा हूं जो गतिशील रूप से उपयोग इंटरैक्शन (डीएचटीएमएल की तरह) के आधार पर नोड्स बनाएगा। आईडी भाग ठीक काम करता है। जब सेटटाइमआउट कहा जाता है तो div हटा दिया जाता है। यह सिर्फ इतना है कि नष्ट कॉलबैक नहीं बुलाया गया था। हो सकता है कि .remove() में नष्ट कॉलबैक का आह्वान करने के लिए हुक नहीं है? – unional
मैं स्रोत में एक और नजर डालता हूं, ऐसा लगता है जैसे उल्का में एक बग है। Remove पर दो कॉलबैक सदस्यता लेते हैं, पहले एक कॉल attrUpdater.stop(); और एक और कॉल रेंज हटाया गया (रेंज); attrUpdater.stop() के साथ अनाम फ़ंक्शन को कॉल किया गया था लेकिन श्रेणी के साथ अनाम कार्य (श्रेणी) नहीं था। श्रेणी हटाया गया (रेंज) वह है जो नष्ट कॉलबैक का आह्वान करता है। – unional