Computed Observables এর মাধ্যমে ডেটা গণনা

KnockoutJS এর বেসিক ধারণা - নকআউটজেএস (KnockoutJS) - Web Development

237

KnockoutJS তে Computed Observables এমন একটি শক্তিশালী ফিচার, যা ডেটার উপর ভিত্তি করে ডাইনামিকভাবে গণনা (calculation) করার জন্য ব্যবহৃত হয়। এটি বিশেষ করে তখন দরকারি যখন আপনি কিছু ডেটা পরিবর্তিত হলে সেই অনুযায়ী অন্য ডেটার মান আপডেট করতে চান।

Computed Observables কী?

Computed Observables হল এমন observables যা অন্য observables এর উপর নির্ভরশীল থাকে। যখন যেসকল observables এগুলির উপর নির্ভরশীল, সেগুলির মান পরিবর্তিত হয়, তখন কম্পিউটেড observable স্বয়ংক্রিয়ভাবে আপডেট হয়ে যায়।

এটি two-way binding এর মতো কাজ করে, তবে এখানে আপনি শুধুমাত্র ডেটা আপডেট করতে না গিয়ে অন্য observables এর মানের উপর ভিত্তি করে ডেটা গণনা করেন।

Computed Observables এর সুবিধা:

  1. Dynamic Calculation: আপনি যে ডেটার উপর ভিত্তি করে গণনা করতে চান, তা পরিবর্তিত হলে কম্পিউটেড observable স্বয়ংক্রিয়ভাবে আপডেট হয়।
  2. Separation of Concerns: গণনা এবং ডেটা আপডেটের লজিক আলাদা রাখার সুবিধা দেয়।
  3. Performance Optimization: শুধুমাত্র প্রয়োজনীয় সময়েই ডেটা আপডেট হয়, অর্থাৎ কম্পিউটেড observables শুধুমাত্র তার নির্ভরশীল observables পরিবর্তিত হলে আপডেট হয়।

KnockoutJS তে Computed Observables ব্যবহার করা

এখন, আসুন Computed Observables কিভাবে ব্যবহার করা যায় তা একটি উদাহরণের মাধ্যমে বুঝে নেওয়া যাক।

Example: Total Price Calculation in a Shopping Cart

ধরা যাক, একটি শপিং কার্টে কয়েকটি আইটেম রয়েছে এবং প্রতিটি আইটেমের দাম এবং পরিমাণ পরিবর্তন হতে পারে। আমরা চাই, যখন আইটেমের পরিমাণ বা দাম পরিবর্তিত হবে, তখন মোট মূল্য স্বয়ংক্রিয়ভাবে আপডেট হবে।

HTML:

<div>
    <h3>Shopping Cart</h3>
    <ul>
        <li>
            <label>Item 1: </label>
            <input type="number" data-bind="value: item1Quantity">
            <span>Price: $<span data-bind="text: item1Price"></span></span>
        </li>
        <li>
            <label>Item 2: </label>
            <input type="number" data-bind="value: item2Quantity">
            <span>Price: $<span data-bind="text: item2Price"></span></span>
        </li>
    </ul>

    <p>Total Price: $<span data-bind="text: totalPrice"></span></p>
</div>

JavaScript (KnockoutJS কোড):

function ViewModel() {
    var self = this;

    // Item Prices
    self.item1Price = ko.observable(10);  // Price of item 1
    self.item2Price = ko.observable(15);  // Price of item 2

    // Item Quantities
    self.item1Quantity = ko.observable(1);  // Quantity of item 1
    self.item2Quantity = ko.observable(1);  // Quantity of item 2

    // Computed Observable for Total Price
    self.totalPrice = ko.computed(function() {
        var total = (self.item1Price() * self.item1Quantity()) + (self.item2Price() * self.item2Quantity());
        return total.toFixed(2);  // Fixed to 2 decimal points
    });
}

// Activates knockout.js
ko.applyBindings(new ViewModel());

ব্যাখ্যা:

  1. Observables:
    • item1Price, item2Price, item1Quantity, এবং item2Quantity সবগুলি observable। এগুলোর মান পরিবর্তিত হলে, KnockoutJS তা UI তে রিফ্লেক্ট করবে।
  2. Computed Observable:
    • totalPrice একটি computed observable যা item1Price, item1Quantity, item2Price, এবং item2Quantity এর উপর ভিত্তি করে গণনা করা হয়। যখন কোন একটি মান পরিবর্তিত হয়, তখন totalPrice আপডেট হবে।
  3. UI Data Binding:
    • data-bind="value: item1Quantity" এবং data-bind="text: item1Price" KnockoutJS এর data-bind সিনট্যাক্স ব্যবহার করে observable এর মান UI তে বাউন্ড করা হচ্ছে।
    • data-bind="text: totalPrice" দিয়ে মোট মূল্য (total price) UI তে দেখানো হচ্ছে।
  4. Automatic Update:
    • KnockoutJS স্বয়ংক্রিয়ভাবে totalPrice এর মান গণনা করে যখন item1Quantity, item2Quantity, item1Price, বা item2Price এর মান পরিবর্তিত হয়। অর্থাৎ, যখন আপনি ইনপুট ফিল্ডে পরিমাণ পরিবর্তন করবেন, মোট মূল্য আপডেট হবে।

Computed Observables এর অন্যান্য ব্যবহার:

  1. Conditional Formatting:

    • আপনি একটি কম্পিউটেড observable ব্যবহার করে শর্তসাপেক্ষ স্টাইল পরিবর্তন করতে পারেন।
    self.statusClass = ko.computed(function() {
        return self.isActive() ? 'active' : 'inactive';
    });
    
  2. Dynamic UI Elements:

    • UI এলিমেন্টের মধ্যে ডাইনামিক তথ্য ইনজেক্ট করার জন্যও কম্পিউটেড observables ব্যবহার করা যায়।
    self.fullName = ko.computed(function() {
        return self.firstName() + ' ' + self.lastName();
    });
    
  3. Complex Calculations:
    • আপনি computed observables ব্যবহার করে অনেকগুলো observable এর উপর ভিত্তি করে জটিল গণনা বা লজিক প্রয়োগ করতে পারেন।

Advantages of Computed Observables:

  1. Automatic Updates: আপনি যে observables এর উপর নির্ভরশীল, সেগুলি পরিবর্তিত হলে computed observable স্বয়ংক্রিয়ভাবে আপডেট হবে, ফলে কোডের কার্যকারিতা বাড়ে।
  2. Reduced Redundancy: একাধিক জায়গায় একই গণনা করার প্রয়োজন নেই। Computed observable আপনাকে একবার সেটি গণনা করতে সহায়তা করবে, এবং ডেটা পরিবর্তিত হলে তা পুনরায় গণনা হবে।
  3. Declarative Syntax: কম্পিউটেড observables খুব সহজ এবং পরিষ্কার ডিক্লেয়ারেটিভ সিনট্যাক্সে কাজ করে।
  4. Efficiency: কম্পিউটেড observables শুধুমাত্র তাদের নির্ভরশীল ডেটা পরিবর্তিত হলে আপডেট হবে, যার ফলে এটি অনেক বেশি কার্যকরী এবং দক্ষ।

Computed Observables হল KnockoutJS এর একটি শক্তিশালী বৈশিষ্ট্য যা ডাইনামিক ডেটা গণনা এবং আপডেট করার জন্য ব্যবহৃত হয়। এটি ডেটা-বাইন্ডিং এবং two-way data binding এর সাথে মিলিত হয়ে অ্যাপ্লিকেশনগুলিকে আরও ইন্টারঅ্যাকটিভ এবং কার্যকরী করে তোলে। আপনি computed observables ব্যবহার করে সোজাসুজি ডেটা আপডেট, শর্তসাপেক্ষ ফরম্যাটিং, এবং অন্যান্য জটিল কাজ করতে পারেন, যা অ্যাপ্লিকেশন ডেভেলপমেন্টে অনেক সুবিধা প্রদান করে।

Content added By
Promotion

Are you sure to start over?

Loading...