Cara sudut
Cara Angular yang benar untuk melakukan ini adalah dengan menulis aplikasi halaman tunggal, AJAX di Templat formulir, lalu mengisinya secara dinamis dari model. Model tidak diisi dari formulir secara default karena model adalah sumber tunggal kebenaran. Sebaliknya Angular akan pergi ke arah lain dan mencoba untuk mengisi formulir dari model.
Namun, jika Anda tidak punya waktu untuk memulai dari awal
Jika Anda memiliki aplikasi yang ditulis, ini mungkin melibatkan beberapa perubahan arsitektur yang lumayan. Jika Anda mencoba menggunakan Angular untuk meningkatkan formulir yang ada, daripada membangun seluruh aplikasi halaman tunggal dari awal, Anda dapat menarik nilai dari formulir dan menyimpannya dalam ruang lingkup saat tautan menggunakan arahan. Angular kemudian akan mengikat nilai dalam lingkup kembali ke formulir dan menyimpannya dalam sinkronisasi.
Menggunakan arahan
Anda bisa menggunakan arahan yang relatif sederhana untuk menarik nilai dari formulir dan memuatnya ke lingkup saat ini. Di sini saya telah mendefinisikan direktif 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);
}
};
});
Anda dapat melihat saya telah menetapkan beberapa fallback untuk mendapatkan nama model. Anda dapat menggunakan arahan ini bersama dengan arahan ngModel, atau mengikat sesuatu selain $ lingkup jika Anda mau.
Gunakan seperti ini:
<input name="test" ng-model="toaster.test" value="hello" init-from-form />
{{toaster.test}}
Perhatikan ini juga akan berfungsi dengan textareas, dan pilih dropdown.
<textarea name="test" ng-model="toaster.test" init-from-form>hello</textarea>
{{toaster.test}}