আমি কোনও ওয়েবপৃষ্ঠায় কার্যকারিতা তৈরি করছি যা ব্যবহারকারী একাধিকবার সম্পাদন করতে পারে। ব্যবহারকারীর ক্রিয়াকলাপের মাধ্যমে, একটি অবজেক্ট / মডেল তৈরি করা হয় এবং কো-এপ্লাইবাইন্ডিংস () ব্যবহার করে এইচটিএমএলে প্রয়োগ করা হয়।
ডেটা-বেঁধে এইচটিএমএল jQuery টেম্পলেট মাধ্যমে তৈরি করা হয়।
এ পর্যন্ত সব ঠিকই.
আমি যখন দ্বিতীয় পদক্ষেপ / মডেল তৈরি করে এই পদক্ষেপটি পুনরাবৃত্তি করি এবং ko.applyBindings () কল করি তখন আমার দুটি সমস্যার মুখোমুখি হয়:
- মার্কআপটি পূর্ববর্তী অবজেক্ট / মডেলের পাশাপাশি নতুন অবজেক্ট / মডেলটি দেখায়।
- একটি জাভাস্ক্রিপ্ট ত্রুটি ঘটেছে অবজেক্ট / মডেলের যে কোনও একটি বৈশিষ্ট্য সম্পর্কিত, যদিও এটি এখনও মার্কআপে রেন্ডার করা হয়েছে।
এই সমস্যাটি সরাতে, প্রথম পাসের পরে আমি jQuery এর .empty () কে কল করি যে সমস্ত ডেটা-বাইন্ড বৈশিষ্ট্যযুক্ত টেম্প্লেটেড এইচটিএমএল সরিয়ে ফেলতে, যাতে এটি আর ডোমে থাকে না। ব্যবহারকারী দ্বিতীয় পাসের জন্য প্রক্রিয়া শুরু করলে ডেটা-ভিত্তিতে এইচটিএমএলটি ডিওমে আবার যুক্ত হয়।
তবে আমি যেমন বলেছিলাম, যখন এইচটিএমএলটি ডিওমে আবার যুক্ত হয় এবং নতুন অবজেক্ট / মডেলটিতে পুনরায় আবদ্ধ হয়, তখনও এটি প্রথম অবজেক্ট / মডেল থেকে ডেটা অন্তর্ভুক্ত করে এবং আমি এখনও জেএস ত্রুটি পাই যা ঘটে না প্রথম পাসের সময়
উপসংহারটি উপস্থিত হয় যে নকআউট এই বাঁধা বৈশিষ্ট্যগুলিকে ধরে রেখেছে, যদিও মার্কটিপটি ডিওএম থেকে সরানো হয়েছে।
সুতরাং আমি যা খুঁজছি তা হ'ল নকআউট থেকে এই সীমাবদ্ধ বৈশিষ্ট্যগুলি সরিয়ে ফেলার একটি মাধ্যম; নকআউট বলছে যে আর কোনও পর্যবেক্ষণযোগ্য মডেল নেই। এই কাজ করতে একটি উপায় আছে কি?
সম্পাদনা
মূল প্রক্রিয়াটি হ'ল ব্যবহারকারী কোনও ফাইল আপলোড করে; সার্ভারটি একটি JSON অবজেক্টের সাথে প্রতিক্রিয়া জানায়, ডেটা-আবদ্ধ এইচটিএমএলটি ডোমে যুক্ত হয়, তারপরে JSON অবজেক্ট মডেলটি এই এইচটিএমএল ব্যবহার করে আবদ্ধ হয়
mn.AccountCreationModel = new AccountViewModel(jsonData.Account);
ko.applyBindings(mn.AccountCreationModel);
একবার ব্যবহারকারীর মডেলটিতে কিছু নির্বাচন করা হয়ে গেলে একই বস্তুটি আবার সার্ভারে পোস্ট করা হয়, তখন ডেটা-ভিত্তিক এইচটিএমএলটি তখন ডিওএম থেকে সরানো হয়, এবং আমার পরে নিম্নলিখিত জেএস থাকে
mn.AccountCreationModel = null;
যখন ব্যবহারকারী আরও একবার এটি করতে চায়, তখন এই সমস্ত পদক্ষেপগুলি পুনরাবৃত্তি হয়।
আমি ভয় পাচ্ছি যে জেএসফিডাল ডেমো করতে কোডটি খুব 'জড়িত'।
init
ক্রিয়াকলাপটি কেন প্রকাশ করা হয় না যেখানে আপনি প্রয়োগ করতে ডেটা পাস করেন?