您應該使用服務來保存數據(州)爲您的表單這樣
angular.module('myAppName').service('myFormService', ['$http', function($http){
var formState = {
FirstName: '',
LastName: '',
Birthday: null
};
// you may also want to put methods here like reset, save etc...
function reset() { formState.FirstName = ''; etc... }
function save() { $http.post(...); }
// this will create a singleton and will remain active across all pages
return {
FormState: formState,
Reset: reset,
Save: save
};
}]);
然後爲不同部分表單創建這樣
angular.module('myAppName').directive('birthdayPicker', ['myFormService', function(myFormService){
function link(scope, element, attrs){
// bind to this in your html
scope.birthday = myFormService.Birthday
}
return {
restrict: 'A',
templateUrl: 'path/to/birthdayPicker.html',
link: link
};
}]);
指令在模板html文件
<div>
<input type="text" data-ng-model="birthday" />
</div>
在您的html文件中使用您的指令,如
<div>
<div data-birthday-picker=""></div>
</div>
現在,當你準備好你的表格狀態發送給服務器,你會簡單地做這 我建議把這個表單服務中的保存方法
$http.post('/someUrl', myFormService.FormState).success(successCallback);
一些額外的提示
馬克:我在哪裏把設置元素(月,日)的子域的邏輯是什麼?我是否需要注入每個表單服務對於每個表單我使用那種類型的字段?如果我在同一個表單中有兩個相同類型的字段會發生什麼? – catalinux
在你的指令中,你可以像這樣綁定它們:不必使用文本字段,你可以綁定到兩個下拉菜單 –