Açısal yol
Bunu yapmanın doğru Açısal yolu, tek bir sayfa uygulaması, AJAX form şablonuna yazmak ve sonra modelden dinamik olarak doldurmaktır. Model varsayılan olarak formdan doldurulmaz, çünkü model tek hakikat kaynağıdır. Bunun yerine Angular diğer yöne gidecek ve formu modelden doldurmaya çalışacaktır.
Ancak, baştan başlamak için zamanınız yoksa
Yazılı bir uygulamanız varsa, bu oldukça ağır mimari değişiklikler içerebilir. Angular'ı tek bir sayfanın tamamını sıfırdan oluşturmak yerine mevcut bir formu geliştirmek için Angular'ı kullanmaya çalışıyorsanız, değeri bir yönerge kullanarak formdan alabilir ve bağlantı zamanında kapsamda saklayabilirsiniz. Açısal, kapsamdaki değeri forma geri bağlar ve senkronize tutar.
Direktif kullanma
Değeri formdan çekmek ve geçerli kapsama yüklemek için nispeten basit bir yönerge kullanabilirsiniz. Burada bir initFromForm yönergesi tanımladım.
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);
}
};
});
Bir model adı almak için birkaç yedek tanımladığımı görebilirsiniz. Bu yönergeyi ngModel yönergesi ile birlikte kullanabilir veya isterseniz $ scope dışında bir şeye bağlayabilirsiniz.
Şöyle kullanın:
<input name="test" ng-model="toaster.test" value="hello" init-from-form />
{{toaster.test}}
Bunun textareas ile çalışacağını ve açılır menüleri seçeceğini unutmayın.
<textarea name="test" ng-model="toaster.test" init-from-form>hello</textarea>
{{toaster.test}}