मैं एक शीर्ष स्तर पृष्ठ दृश्य कि खुद को फिर से प्रस्तुत करना जब भी मार्ग परिवर्तन निकालें। मेरे पास इस पृष्ठ दृश्य में एम्बेडेड कई घोंसले वाले उप-दृश्य हैं। अगर मैं पृष्ठ दृश्य फिर से प्रस्तुत करने के लिए किया गया था,/पृष्ठ दृश्य के साथ-साथ सभी नेस्टेड सब-विचारों निकल रहा हटाने की जरूरत है या मैं केवल हटाने/पृष्ठ दृश्य निकल की जरूरत है? अगर मुझे सभी उप-विचारों को हटाने/अनइंड करने की आवश्यकता है, तो ऐसा करने का सबसे अच्छा तरीका क्या है?Backbone.js - सभी उप विचारों
उत्तर
हाँ, आप ठीक ढंग से निकालने और उन्हें निकल की जरूरत है:
यह करने के लिए आसान तरीका माता पिता दृश्य में अपने उप-विचारों की एक सरणी स्टोर करने के लिए है।
ParentView = Backbone.View.extend({
initialize: function(){
this.childViews = [];
},
render: {
for (var i = 0; i < 10; i++){
var childView = new ChildView();
// do stuff with the child view
this.childViews.push(childView);
}
},
close: function(){
this.remove();
this.unbind();
// handle other unbinding needs, here
_.each(this.childViews, function(childView){
if (childView.close){
childView.close();
}
})
}
});
जनक दृश्य पर close
विधि कॉल करने के लिए जब आप तैयार हैं यह होने के लिए सुनिश्चित करें: तो फिर माता-पिता देखने के लिए, सरणी के माध्यम से लूप पर एक close
विधि में और बच्चे दृश्यों पर एक close
विधि कॉल हटा दिया/बदला गया। यह सुनिश्चित करेगा कि सभी बच्चे ठीक से साफ हो जाएं (मान लें कि उनमें से सभी का अपना close
विधि है)।
अरे Derick, मैं इस पर आपका सलाह का पालन किया है, लेकिन जब एक दृश्य को बंद करने + यह बच्चे विचारों है मैं वास्तव में बहुत ज़्यादा समय लग रहा है। कुछ मामलों में यह 5-10 सेकंड तक हो सकता है। ऐसा लगता है कि देरी इस से आता है .remove()। क्या आपको कोई विचार है क्यों? – ragulka
जो कि काफी लंबा और भयानक है! मैंने ऐसा कभी नहीं देखा है, ईमानदारी से ... डीओएम संरचना कितनी बड़ी है जिसे आप हटा रहे हैं? मेरा एकमात्र अनुमान वास्तव में धीमा ब्राउज़र होगा, और/या एक बहुत बड़ा डोम नोड सेट होगा। –
अरे, कभी नहीं - ऐसा लगता है कि यह एक jquery प्लगइन के साथ एक समस्या है जो किसी भी तरह से दृश्य के निकालने() फ़ंक्शन के साथ विरोधाभासी है: http://stackoverflow.com/questions/9877786/calling-jquery-remove-on-custom-ui -विजेट-कारण-अनंत-लूप/9878287 # 9878287 – ragulka
; आपको अपने मूल दृश्य में प्रत्येक बच्चे के दृश्य के लिए एक संपत्ति सेट करना सुनिश्चित करना होगा।
नीचे दिए गए उदाहरण में, बच्चे को देखा गया जनक दृश्य के गुणों की तैयारी में हैं। मुझे यकीन नहीं है कि प्रदर्शन हिट सभी गुणों के माध्यम से लूपिंग होगी, हालांकि, बच्चे के विचारों के लिए एक अलग डेटा संरचना का ट्रैक रखने से यह आसान हो सकता है।
उदाहरण:
var ContextView = Backbone.View.extend({
initialize: function() {
// views render themselves via their initialize methods
this.titlebar = new TitlebarView({el: $("#titlebar")});
this.toolbar = new ToolbarView({el: $("#toolbar")});
this.content = new ContentView({el: $("#content")});
},
removeChildViews: function() {
for(var prop in this){
if (this[prop] instanceof Backbone.View) {
console.log("This is a view: "+ prop + ' in ' + this[prop]);
}
}
},
render: function() {
this.$el.html(this.el);
}
});
एक सरल और मॉड्यूलर वर्ग जो आपके लिए उपयोगी हो सकता है।
ContainerView = Backbone.View.extend({
initialize: function() {
this.children = [];
},
remove: function() {
Backbone.View.prototype.remove.apply(this, arguments);
this.removeAllChildren();
},
removeAllChildren: function() {
_.each(this.children, function(view) { view.remove(); });
this.children = [];
},
appendAllChildren: function() {
_.each(this.children, function(view) { this.$el.append(view.render().$el); }, this);
}
});
उपयोग:
MyView = ContainerView.extend({
render: function() {
this.removeAllChildren();
this.$el.empty();
// For each child view...
// this.children.push(new SomeControl(...));
this.appendAllChildren();
return this;
}
});
थोड़ा Zengineer की तरह लिखा है, मैं, विश्व स्तर पर निम्नलिखित की तरह Backbone.View.remove पैच करने के लिए चाहते हैं, जिससे कि किसी भी बच्चे को देखा गया इस पर संलग्न निकाल दिए जाते हैं
var originalRemove = Backbone.View.prototype.remove;
Backbone.View.prototype.remove = function()
{
for (var view in this){
if (this[view] instanceof Backbone.View && this[view] != this) {
this[view].remove();
}
}
originalRemove.apply(this, arguments);
}
- 1. Backbone.js में उप विचारों को घटनाओं सौंपना
- 2. Backbone.js: नेस्टेड विचारों
- 3. Backbone.js: विचारों के बीच संचार
- 4. backbone.js के साथ विचारों को साफ करना?
- 5. Backbone.js
- 6. backbone.js यह ._configure विचारों को कॉल करते समय अपरिभाषित
- 7. Backbone.js विचारों में कस्टम ईवेंट को ट्रिगर/बाध्य कैसे करें?
- 8. backbone.js - विचारों और प्रबंधन घटनाओं के भीतर विचार
- 9. सभी फ़ोल्डर और उप-फ़ोल्डरों
- 10. Backbone.js: templating
- 11. backbone.js
- 12. Backbone.js मास्टर-विस्तार परिदृश्य
- 13. Backbone.js
- 14. backbone.js
- 15. backbone.js - fetch
- 16. विचारों
- 17. backbone.js संग्रह आइटम को
- 18. Backbone.js
- 19. backbone.js
- 20. backbone.js
- 21. backbone.js
- 22. Backbone.js
- 23. Backbone.js
- 24. backbone.js
- 25. Backbone.js
- 26. backbone.js
- 27. backbone.js
- 28. backbone.js:
- 29. Backbone.js
- 30. backbone.js
क्या आप अनबाइंड उप देखा गया मतलब है? क्या आप घटनाओं का मतलब है? – Trevor