我目前使用的是以下内容。
$scope.$$childHead.customerForm[firstName]
,因此:
<form name="customerForm">
<input type="text" name="firstName"
ng-model="data.customer.firstName"
tabindex="1"
ng-disabled="!data.editable"
validationcustomer />
</form>
但这只适用于Chrome。现在,我尝试了以下方法:
$scope.editCustomerForm[firstName]
,因此:
<form name="customerForm" ng-model="editCustomerForm">
<input type="text" name="firstName"
ng-model="data.customer.firstName" tabindex="1"
ng-disabled="!data.editable"
validationcustomer />
</form>
这不管用。注意:我的表单在Foundation选项卡中。如何访问firstName
编辑:当form
位于基础选项卡中时,它看起来并没有添加到scope
中。
有人有解决这个问题的办法吗?
发布于 2014-11-25 09:10:13
您无法访问输入的原因是因为基础选项卡(或ng-repeat
?)创建isolate scope。解决此问题的一种方法是使用controller as语法:
<div ng-controller="MyController as ctrl">
<!-- an example of a directive that would create an isolate scope -->
<div ng-if="true">
<form name="ctrl.myForm">
...inputs
Dirty? {{ctrl.myForm.$dirty}}
<button ng-click="ctrl.saveChanges()">Save</button>
</form>
</div>
</div>
然后,您可以在代码中访问FormController,如下所示:
function MyController () {
var vm = this;
vm.saveChanges = saveChanges;
function saveChanges() {
if(vm.myForm.$valid) {
// Save to db or whatever.
vm.myForm.$setPristine();
}
}
发布于 2014-04-09 22:18:55
您可以将窗体附加到父控制器中定义的某个对象。然后,您甚至可以从子作用域访问表单。
父控制器
$scope.forms = {};
在子作用域中一些模板
<form name="forms.form1">
</form>
问题是,表单不必在执行控制器中的代码时定义。所以你必须做这样的事情
$scope.$watch('forms.form1', function(form) {
if(form) {
// your code...
}
});
发布于 2014-06-09 23:19:19
如果要将表单传递给控制器进行验证,只需将其作为参数传递给处理提交的方法即可。使用表单名称,因此对于原始问题,应该是这样的:
<button ng-click="submit(customerForm)">Save</button>
https://stackoverflow.com/questions/19568761
复制相似问题