ExtJS এ Nested Views এবং Routing Events ব্যবহৃত হয় একাধিক ভিউ এবং নেভিগেশন পরিচালনা করার জন্য, যা আপনাকে অ্যাপ্লিকেশনের মধ্যে বিভিন্ন অংশের মধ্যে ভিউ রাউটিং এবং ডায়নামিক কন্টেন্ট লোড করার ক্ষমতা প্রদান করে। এই ফিচারগুলি সাধারণত একক পৃষ্ঠার অ্যাপ্লিকেশন (SPA) তৈরি করার জন্য ব্যবহৃত হয়।
Nested Views হলো এমন ভিউ যা অন্য ভিউয়ের মধ্যে অন্তর্ভুক্ত থাকে বা নির্দিষ্ট প্যানেলে উপস্থাপিত হয়। এর মাধ্যমে আপনি ডায়নামিকভাবে একাধিক ভিউকে একে অপরের মধ্যে অ্যাড করতে পারেন, যাতে আপনার অ্যাপ্লিকেশন স্কেলেবল এবং আরও মডুলার হয়।
ধরা যাক, আপনার একটি মূল প্যানেল রয়েছে, এবং এতে আপনি দুটি ভিউ (একটি গ্রিড এবং একটি ফর্ম) অন্তর্ভুক্ত করতে চান।
Ext.define('MyApp.view.MainPanel', {
extend: 'Ext.panel.Panel',
xtype: 'mainpanel',
layout: 'border', // Layout সেট করা হলো 'border' যাতে ভিউটি বিভিন্ন অংশে বিভক্ত হয়
items: [
{
xtype: 'grid', // প্রথম ভিউ: গ্রিড
region: 'center',
store: 'MyStore', // স্টোর ব্যবহার হচ্ছে
columns: [
{ text: 'Name', dataIndex: 'name' },
{ text: 'Email', dataIndex: 'email' }
]
},
{
xtype: 'form', // দ্বিতীয় ভিউ: ফর্ম
region: 'east', // ফর্মটি 'east' অঞ্চলে
title: 'User Form',
width: 300,
bodyPadding: 10,
items: [
{ xtype: 'textfield', fieldLabel: 'Name' },
{ xtype: 'textfield', fieldLabel: 'Email' }
]
}
]
});
এখানে:
xtype: 'grid'
: একটি গ্রিড ভিউ তৈরি করা হয়েছে যা ডেটা টেবিল দেখাবে।xtype: 'form'
: একটি ফর্ম ভিউ তৈরি করা হয়েছে যেখানে ব্যবহারকারী ইনপুট দিতে পারবেন।এগুলি layout: 'border'
এর মাধ্যমে একটি নির্দিষ্ট অঞ্চল (এস্ট, সেন্টার) তৈরি হয়ে একে অপরের মধ্যে নেস্টেড হয়ে গেছে।
Routing Events বা View Routing একটি গুরুত্বপূর্ণ বিষয় একক পৃষ্ঠার অ্যাপ্লিকেশন (SPA) তৈরি করার জন্য, যেখানে আপনি বিভিন্ন ভিউয়ের মধ্যে সহজেই নেভিগেট করতে পারেন। ExtJS এর Ext.router
ক্লাস ব্যবহৃত হয় রাউটিং এবং URL এর মাধ্যমে ভিউ পরিবর্তন পরিচালনা করার জন্য।
ExtJS তে রাউটিং ব্যবহারের জন্য Ext.util.History
এবং Ext.Router
ব্যবহৃত হয়, যা ভিউ রাউটিং, URL হ্যান্ডলিং এবং হিস্ট্রি ম্যানেজমেন্ট করতে সাহায্য করে।
Ext.define('MyApp.view.Main', {
extend: 'Ext.container.Viewport',
layout: 'fit',
items: [{
xtype: 'panel',
html: '<h1>Welcome to MyApp</h1>',
dockedItems: [{
xtype: 'toolbar',
items: [{
text: 'Go to Page 1',
handler: function() {
Ext.Router.redirect('page1'); // Page1 এর URL এ রিডিরেক্ট করা
}
}, {
text: 'Go to Page 2',
handler: function() {
Ext.Router.redirect('page2'); // Page2 এর URL এ রিডিরেক্ট করা
}
}]
}]
}]
});
// Routing configuration
Ext.Router.add({
':page': {
action: 'onPageChange'
}
});
// Controller to handle page change
Ext.define('MyApp.controller.MainController', {
extend: 'Ext.app.Controller',
onPageChange: function(params) {
var page = params.page;
var panel = Ext.ComponentQuery.query('panel')[0];
if (page === 'page1') {
panel.update('<h1>This is Page 1</h1>');
} else if (page === 'page2') {
panel.update('<h1>This is Page 2</h1>');
}
}
});
এখানে:
Ext.Router.add
: এটি URL পাথ যোগ করে, এবং প্রতিটি পাথের জন্য একটি অ্যাকশন নির্ধারণ করে। যেমন: :page
হল URL প্যারামিটার যেটি page1
বা page2
হতে পারে।Ext.Router.redirect
: এটি রিডিরেক্ট করার জন্য ব্যবহৃত হয়। যখন ইউজার "Go to Page 1" বা "Go to Page 2" ক্লিক করবে, তখন URL পরিবর্তিত হবে এবং onPageChange
অ্যাকশন কল হবে।onPageChange
: এটি একটি কন্ট্রোলার ফাংশন যা URL অনুযায়ী কনটেন্ট পরিবর্তন করবে।Nested Views এবং Routing Events একত্রে ব্যবহারের মাধ্যমে আপনি ডাইনামিক এবং ইন্টারেক্টিভ একক পৃষ্ঠার অ্যাপ্লিকেশন (SPA) তৈরি করতে পারেন, যেখানে ভিউ রাউটিং এবং nested (নেস্টেড) ভিউ দ্বারা ব্যবহারকারীর ইন্টারঅ্যাকশন সহ অ্যাপ্লিকেশনটি পরিচালনা হয়।
Ext.define('MyApp.view.Main', {
extend: 'Ext.container.Viewport',
layout: 'fit',
items: [{
xtype: 'panel',
itemId: 'mainPanel',
html: '<h1>Home Page</h1>',
dockedItems: [{
xtype: 'toolbar',
items: [{
text: 'Go to Page 1',
handler: function() {
Ext.Router.redirect('page1'); // Redirect to page1 route
}
}, {
text: 'Go to Page 2',
handler: function() {
Ext.Router.redirect('page2'); // Redirect to page2 route
}
}]
}]
}]
});
// Adding routes for page1 and page2
Ext.Router.add({
':page': {
action: 'onPageChange'
}
});
// Controller to handle the routes
Ext.define('MyApp.controller.MainController', {
extend: 'Ext.app.Controller',
onPageChange: function(params) {
var page = params.page;
var panel = Ext.ComponentQuery.query('#mainPanel')[0]; // Targeting main panel
if (page === 'page1') {
panel.update('<h1>This is Page 1</h1>');
panel.add({ xtype: 'button', text: 'Click Me!' }); // Add nested button to page 1
} else if (page === 'page2') {
panel.update('<h1>This is Page 2</h1>');
panel.add({ xtype: 'button', text: 'Click Here!' }); // Add nested button to page 2
}
}
});
এখানে:
Ext.Router.redirect
এবং Ext.Router.add
ব্যবহার করে আমরা ভিউ রাউটিং এবং URL চেঞ্জ নিয়ন্ত্রণ করছি।Ext.Router
ব্যবহার করে URL রাউটিং এবং ভিউ রাউটিং করা যায়, যা একক পৃষ্ঠার অ্যাপ্লিকেশন (SPA) তৈরি করতে সাহায্য করে।এভাবে Nested Views এবং Routing একসাথে ব্যবহারের মাধ্যমে আপনি একটি পূর্ণাঙ্গ SPA (Single Page Application) তৈরি করতে পারবেন যা বিভিন্ন ভিউর মধ্যে সহজে নেভিগেট করা যায়।
Read more