Extjs Store loader

เราไม่ควรใช้ autoLoad store เนื่องจากจะทำให้ store นั้นถูกโหลดอัตโนมัติตั้งแต่การเรียกใช้งาน

วิธีที่ดีกว่า คือ การ load() เมื่อ component ที่เรียกใช้ store นั้นถูกแสดงผล (เพิ่มลงไปใน container) โดยใช้โค้ดดังนี้

// เรียกใช้ใน component ที่มี store
	listeners: {
		added: function() {
			this.store.load();
		},
	},

การเพิ่ม logic นี้ลงไป จะช่วยให้เราไม่ต้องมี store request จำนวนมากในตอนเรียกใช้ app ครั้งแรก แต่มีผลข้างเคียงคือ store เดียว อาจมีการ load() ข้อมูลซ้ำหลายๆ ครั้ง หากมีการถูกเรียกใช้จาก component หลายๆ ตัว กรณีนี้ อาจแก้ไขได้โดยใช้โค้ดดังนี้

	listeners: {
		added: function() {
			if (this.store.count() == 0 && !this.store.isLoading)
				this.store.load();
		},
	},

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>