কৌণিক উপায়
এটি করার সঠিক কৌণিক উপায় হ'ল ফর্ম টেমপ্লেটে একটি একক পৃষ্ঠার অ্যাপ, এজেএক্স লিখুন, তারপরে এটি মডেল থেকে গতিশীল পপুলেট করুন। মডেলটি ফর্ম থেকে ডিফল্টরূপে পপুলেশন হয় না কারণ মডেলটি সত্যের একক উত্স। পরিবর্তে অ্যাঙ্গুলার অন্যভাবে চলে যাবে এবং মডেল থেকে ফর্মটি পপুল করার চেষ্টা করবে।
তবে, আপনার স্ক্র্যাচ থেকে আরম্ভ করার সময় নেই
আপনার যদি লিখিত কোনও অ্যাপ থাকে তবে এতে কিছু মোটামুটি বিশাল আর্কিটেকচারাল পরিবর্তন জড়িত থাকতে পারে। আপনি যদি স্ক্র্যাচ থেকে পুরো একক পৃষ্ঠার অ্যাপটি তৈরির পরিবর্তে কোনও বিদ্যমান ফর্মটি বাড়ানোর জন্য কৌণিক ব্যবহার করার চেষ্টা করছেন, আপনি ফর্মটি থেকে মানটি টানতে পারেন এবং নির্দেশের সাহায্যে লিঙ্ক টাইমে এটিকে স্কোপে সঞ্চয় করতে পারেন। এর পরে কৌণিকটি স্কোপের মানটিকে ফর্মের সাথে আবার বেঁধে সিঙ্কে রাখবে।
একটি নির্দেশনা ব্যবহার করে
আপনি ফর্ম থেকে মানটি টানতে এবং এটি বর্তমান স্কোপে লোড করতে তুলনামূলক সহজ নির্দেশিকা ব্যবহার করতে পারেন। এখানে আমি একটি initFromForm নির্দেশকে সংজ্ঞায়িত করেছি।
var myApp = angular.module("myApp", ['initFromForm']);
angular.module('initFromForm', [])
.directive("initFromForm", function ($parse) {
return {
link: function (scope, element, attrs) {
var attr = attrs.initFromForm || attrs.ngModel || element.attrs('name'),
val = attrs.value;
if (attrs.type === "number") {val = parseInt(val)}
$parse(attr).assign(scope, val);
}
};
});
আপনি দেখতে পাচ্ছেন যে আমি একটি মডেল নাম পেতে বেশ কয়েকটি ফ্যালব্যাক সংজ্ঞায়িত করেছি। আপনি এই নির্দেশকে এনজিএমডেল নির্দেশের সাথে একযোগে ব্যবহার করতে পারেন, বা আপনি যদি পছন্দ করেন তবে $ সুযোগ ব্যতীত অন্য কোনও কিছুকে আবদ্ধ করতে পারেন।
এটি এর মতো ব্যবহার করুন:
<input name="test" ng-model="toaster.test" value="hello" init-from-form />
{{toaster.test}}
নোট করুন এটি টেক্সারিয়াসের সাথেও কাজ করবে এবং ড্রপডাউন নির্বাচন করবে।
<textarea name="test" ng-model="toaster.test" init-from-form>hello</textarea>
{{toaster.test}}