আমার একটি নেস্টেড-ভিউ সেটআপ রয়েছে যা আমার অ্যাপ্লিকেশনটিতে কিছুটা গভীর হতে পারে। আমি উপ-মতামত শুরু করার, রেন্ডারিং এবং সংযোজন সম্পর্কে ভাবতে পারি এমন অনেকগুলি উপায় রয়েছে তবে আমি ভাবছি যে সাধারণ অভ্যাসটি কী।
আমি এমন এক দম্পতি যা আমি ভেবেছিলাম:
initialize : function () {
this.subView1 = new Subview({options});
this.subView2 = new Subview({options});
},
render : function () {
this.$el.html(this.template());
this.subView1.setElement('.some-el').render();
this.subView2.setElement('.some-el').render();
}
পেশাদাররা: অ্যাডেন্ডিংয়ের সাথে আপনাকে সঠিক ডিওএম অর্ডার বজায় রাখার বিষয়ে চিন্তা করতে হবে না। ভিউগুলি প্রথম দিকে আরম্ভ করা হয়, সুতরাং রেন্ডার ফাংশনে একবারে সমস্ত কিছু করার মতো কিছুই নেই।
কনস: আপনাকে বাধ্য করা হচ্ছে পুনঃপ্রেরণাপত্রের বিজ্ঞাপনগুলি (), যা ব্যয়বহুল হতে পারে? প্যারেন্ট ভিউয়ের রেন্ডার ফাংশনটি হ'ল সাবউভিউ রেন্ডারিংয়ের সাথে বিশৃঙ্খলাযুক্ত যে ঘটতে হবে? tagName
আপনার উপাদানগুলির সেট করার ক্ষমতা নেই , সুতরাং টেমপ্লেটের সঠিক ট্যাগনামগুলি বজায় রাখা দরকার।
অন্য উপায়:
initialize : function () {
},
render : function () {
this.$el.empty();
this.subView1 = new Subview({options});
this.subView2 = new Subview({options});
this.$el.append(this.subView1.render().el, this.subView2.render().el);
}
পেশাদাররা: আপনাকে ইভেন্টগুলি পুনঃ-ডেলিগেট করতে হবে না। আপনার এমন কোনও টেম্পলেট দরকার নেই যা খালি স্থানধারক ধারণ করে এবং আপনার ট্যাগনামটি ভিউ দ্বারা সংজ্ঞায়িত করতে ফিরে এসেছে।
কনস: আপনাকে এখন সঠিক ক্রমে জিনিসগুলি যুক্ত করতে হবে তা নিশ্চিত করতে হবে। প্যারেন্ট ভিউয়ের রেন্ডারটি সাবউভিউ রেন্ডারিং দ্বারা এখনও বিশৃঙ্খল।
একটি onRender
ইভেন্ট সহ:
initialize : function () {
this.on('render', this.onRender);
this.subView1 = new Subview({options});
this.subView2 = new Subview({options});
},
render : function () {
this.$el.html(this.template);
//other stuff
return this.trigger('render');
},
onRender : function () {
this.subView1.setElement('.some-el').render();
this.subView2.setElement('.some-el').render();
}
পেশাদাররা: সাবউউ লজিকটি এখন দেখার থেকে আলাদা করা হয়েছেrender()
পদ্ধতি ।
একটি onRender
ইভেন্ট সহ:
initialize : function () {
this.on('render', this.onRender);
},
render : function () {
this.$el.html(this.template);
//other stuff
return this.trigger('render');
},
onRender : function () {
this.subView1 = new Subview();
this.subView2 = new Subview();
this.subView1.setElement('.some-el').render();
this.subView2.setElement('.some-el').render();
}
আমি এই সমস্ত উদাহরণ জুড়ে একধরণের মিশ্রিত করেছি এবং বিভিন্ন অনুশীলনের একটি গুচ্ছ মেলেছি (এর জন্য দুঃখিত) তবে আপনি কী রাখবেন বা যুক্ত করবেন সেগুলি কী? এবং আপনি কি করবেন না?
অনুশীলনের সংক্ষিপ্তসার:
- ভিতরে
initialize
বা ভিতরে সাবভিউ ইনস্টল করুনrender
? - সমস্ত সাব-ভিউ রেন্ডারিং লজিক ইন
render
বা ইন সম্পাদন করুনonRender
? - ব্যবহার করবেন
setElement
নাকিappend/appendTo
?
close
পদ্ধতি আছে যা একটি onClose
শিশুকে পরিষ্কার করে দেয় তবে আমি কীভাবে তাত্ক্ষণিকভাবে তাদের প্রথম স্থানে রেন্ডার করব এবং কীভাবে রেন্ডার করব তা সম্পর্কে আমি আগ্রহী।
delete
জেএসে delete
সি ++ এর সমান নয় । আপনি যদি আমাকে জিজ্ঞাসা করেন তবে এটি খুব খারাপ নামযুক্ত কীওয়ার্ড।