অ্যাঙ্গুলারজেএস একটি আকর্ষণীয় কাজ করতে পারে তা হল কোনও নির্দিষ্ট ডেটাবাইন্ডিং এক্সপ্রেশনটিতে একটি ফিল্টার প্রয়োগ করা, যা প্রয়োগ করার একটি সুবিধাজনক উপায়, উদাহরণস্বরূপ, সংস্কৃতি-নির্দিষ্ট মুদ্রা বা কোনও মডেলের বৈশিষ্ট্যের তারিখ বিন্যাস। স্কোপে গণিত বৈশিষ্ট্যগুলিও পাওয়া ভাল। সমস্যাটি হ'ল এই বৈশিষ্ট্যগুলির কোনওটিই দ্বি-মুখী ডেটাবাইন্ডিং দৃশ্যের সাথে কাজ করে না - সুযোগ থেকে দর্শন পর্যন্ত কেবল একমুখী ডেটাবাইন্ডিং। এটি অন্যথায় দুর্দান্ত লাইব্রেরিতে এক চমকপ্রদ ভুল বলে মনে হচ্ছে - বা আমি কিছু হারিয়ে যাচ্ছি?
ইন KnockoutJS , আমি একটি পঠন / লিখন নির্ণিত সম্পত্তি তৈরী করতে পারে, যা আমার ফাংশন একজোড়া, এক যা সম্পত্তির মূল্য পেতে বলা হয়, এবং এক যা যখন সম্পত্তি সেট করা হয় বলা হয় নির্দিষ্ট করার অনুমতি দেওয়া হয়েছে। এটি আমাকে বাস্তবায়নের অনুমতি দেয়, উদাহরণস্বরূপ, সংস্কৃতি-সচেতন ইনপুট - ব্যবহারকারীকে "$ 1.24" টাইপ করতে দেয় এবং ভিউমোডেলে একটি ফ্লোটে পার্সিং করে এবং ইনপুটটিতে প্রতিফলিত ভিউমোডেলে পরিবর্তন আসে।
আমি এর সাথে সবচেয়ে কাছের জিনিসটি দেখতে পেলাম $scope.$watch(propertyName, functionOrNGExpression);
এটির ব্যবহারটি হ'ল এটি যখন আমার কোনও $scope
পরিবর্তন পরিবর্তিত হয় তখন এটি একটি ফাংশন আমন্ত্রণ করতে দেয় । তবে এটি সমাধান করে না, উদাহরণস্বরূপ, সংস্কৃতি-সচেতন ইনপুট সমস্যা। আমি যখন পদ্ধতিটিতেই $watched
সম্পত্তিটি পরিবর্তন করার চেষ্টা করি তখন সমস্যাগুলি লক্ষ্য করুন $watch
:
$scope.$watch("property", function (newValue, oldValue) {
$scope.outputMessage = "oldValue: " + oldValue + " newValue: " + newValue;
$scope.property = Globalize.parseFloat(newValue);
});
( http://jsfiddle.net/gyZH8/2/ )
ব্যবহারকারী টাইপ করা শুরু করলে ইনপুট উপাদানটি খুব বিভ্রান্ত হয়। সম্পত্তিটিকে দুটি বৈশিষ্ট্যে বিভক্ত করে আমি এর উন্নতি করেছি, একটি আনসারসড মান এবং একটি পার্সড মানের জন্য:
$scope.visibleProperty= 0.0;
$scope.hiddenProperty = 0.0;
$scope.$watch("visibleProperty", function (newValue, oldValue) {
$scope.outputMessage = "oldValue: " + oldValue + " newValue: " + newValue;
$scope.hiddenProperty = Globalize.parseFloat(newValue);
});
( http://jsfiddle.net/XkPNv/1/ )
এটি প্রথম সংস্করণের তুলনায় একটি উন্নতি ছিল, তবে এটি আরও কিছুটা ভারবস, এবং লক্ষ্য করুন যে parsedValue
সুযোগের পরিবর্তনের সম্পত্তিটির এখনও একটি সমস্যা রয়েছে (দ্বিতীয় ইনপুটটিতে কিছু টাইপ করুন যা parsedValue
সরাসরি পরিবর্তন করে notice হালনাগাদ). এটি কোনও নিয়ামক পদক্ষেপ থেকে বা ডেটা পরিষেবা থেকে ডেটা লোড করার মাধ্যমে ঘটতে পারে।
অ্যাঙ্গুলারজেএস ব্যবহার করে এই দৃশ্য বাস্তবায়নের আরও সহজ কোনও উপায় আছে কি? আমি কি ডকুমেন্টেশনে কিছু কার্যকারিতা মিস করছি?