মডেলের ইভেন্ট নিয়ে কাজ করা

ব্যাকবোন মডেল নিয়ে এটা শেষ অংশ আর এখানে আমরা আলোচনা করবো মডেলের ইভেন্ট নিয়ে এবং কিভাবে সেই ইভেন্টের সাথে কোন লিসেনার বাইন্ড করা যায়। নিচের উদাহরণে আমরা firstName এবং lastName এর উপরে দুটি লিসেনার অ্যাটাচ করবো, দুইভাবে

প্রথম উদাহরণে আমরা দেখব কিভাবে মডেলের কোন ডেটা পরিবর্তন হলে কোন লিসেনার ফাংশন রান করান যায়

var person = Backbone.Model.extend({
    defaults: {
        firstName: "The",
        lastName: "Anonymous",
        age: 0
    }
});

var p1 = new person();

p1.on("change", function (model, attributes) {
    console.log('something has changed');
});

p1.set("firstName", "Aron");
//this will trigger the change event, and you will see the console output

উপরের উদাহরণে আপনি দেখলেন যে কিভাবে আমরা মডেলের change ইভেন্টের সাথে একটা ফাংশন বাইন্ড করেছি যাতে মডেলের কোন প্রপার্টি/অ্যাট্রিবিউট পরিবর্তিত হলেই সেই ফাংশনটি রান করে। কিন্তু এখানে আমরা যদি চাই যে নির্দিষ্ট কোন প্রপার্টি / অ্যাট্রিবিউট এর পরিবর্তন হলে আমরা কোন কাজ করব, তাহলে লক্ষ্য করুন নিচের উদাহরণ টি

var person = Backbone.Model.extend({
    defaults: {
        firstName: "The",
        lastName: "Anonymous",
        age: 0
    }
});

var p1 = new person();

p1.on("change:lastName", function (model, name) {
    console.log('Last Name Changed from ' + model.previous('lastName') + " to " + name);
});

p1.set("firstName", "Aron");
//no event will be fired

p1.set("lastName", "Springfield");
//this will trigger the event
//outputs "Last Name Changed from Anonymous to Springfield"

উপরের উদাহরণে আপনি দেখবেন যে আমরা lastName এর পরিবর্তনের উপরে একটি ইভেন্ট লিসেনার বাইন্ড করেছি। এর ফলে firstName পরিবর্তন করা হলেও সেটা কোন ইভেন্ট লিসেনার রান করে নি। শুধুমাত্র যখন আমরা lastName সেট করেছি নতুন করে, তখন আমাদের লিসেনার ফাংশনটি রান করেছে

ব্যাকবোন.জেএস এর বিভিন্ন ইভেন্টের লিস্ট জানতে এই ইউআরএলটি দেখতে পারেন http://backbonejs.org/#Events-catalog

এই ইউআরএলে গেলে লিস্টে দেখবেন যে মডেলের বেশ কয়েকধরনের ইভেন্ট রয়েছে। ইতোমধ্যেই আমরা change ইভেন্ট টি দেখেছি। এরকম রয়েছে destroy যা কিনা মডেলকে destroy() করলে রান করে। এছাড়া সার্ভার সাইডে যখন আমরা মডেলের ডেটা সিংক করব, তখন আরও কিছু ইভেন্ট রান করে, যেমন "sync", "request", "error" ইত্যাদি

পূর্ববর্তী অংশ: ব্যাকবোন.জেএস মডেলের কিছু চমৎকার এবং উপকারী মেথড