পূর্বের উত্তরটি সঠিক, তবে প্রায়শই আমি কাস্টম বাইন্ডিংগুলিতে ফাংশনগুলিতে পাস করি (এমন একটি ফাংশন যা অনুমতি পরীক্ষা করে, বা অন্য কোনও কিছুর উপর নির্ভর করে কী করা উচিত তা নির্ধারণ করে)। আমার যা প্রয়োজন ছিল তা হ'ল কোনও ফাংশন মোড়ক করা, এমনকি এটি পর্যবেক্ষণযোগ্য না হলেও।
নিম্নলিখিত পুনরাবৃত্তভাবে সমস্ত কিছু আবরণে:
ko.utils.unwrapFunction = function (func) {
if (typeof func != 'function') {
return func;
}
else {
return ko.utils.unwrapFunction(func());
}
};
এখানে আমি লিখেছি এমন একটি সাধারণ কাস্টম বাঁধাইয়ের একটি উদাহরণ:
//replaces single and double 'smart' quotes users commonly paste in from word into textareas and textboxes with normal text equivalents
//USAGE:
//data-bind="replaceWordChars:true
//also works with valueUpdate:'keyup' if you want"
ko.bindingHandlers.replaceWordChars = {
update: function (element, valueAccessor, allBindingsAccessor, viewModel) {
var bindingValue = ko.utils.unwrapFunction(valueAccessor);
if (bindingValue) {
$(element).val(removeMSWordChars(allBindingsAccessor().value())); //update DOM - not sure why I should need to do this, but just updating viewModel doesn't always update DOM correctly for me
allBindingsAccessor().value($(element).val()); //update viewModel
}
}
}
এইভাবে বাইন্ডিংভ্যালুতে সর্বদা একটি মান থাকে। আমি যদি কোনও পর্যবেক্ষণযোগ্য, কোনও পর্যবেক্ষণযোগ্য, মান, বা পর্যবেক্ষণের অভ্যন্তরে এমনকি কোনও ফাংশনে পাস করি তবে আমাকে উদ্বিগ্ন হওয়ার দরকার নেই। এটি যতক্ষণ না আমার পছন্দসই বস্তুটিতে পৌঁছেছে ততক্ষণ এটিকে সবকিছু সঠিকভাবে আনপ্রেপ করা হবে।
আশা করি যে কাউকে সাহায্য করবে।
ko.toJS(yourObject)
ব্যবহার না করে বরং তার চেয়ে ভালko.utils.unwrapObservable
। সাধারণভাবে,ko.utils.unwrapObservable
পর্যবেক্ষণযোগ্য এবং অ-পর্যবেক্ষণযোগ্যদের সমর্থন করার জন্য এটি ব্যবহার করা সবচেয়ে নিরাপদ ।