首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >我可以访问控制器中的表单吗?

我可以访问控制器中的表单吗?
EN

Stack Overflow用户
提问于 2013-10-24 22:29:34
回答 9查看 176.6K关注 0票数 153

我目前使用的是以下内容。

$scope.$$childHead.customerForm[firstName],因此:

代码语言:javascript
复制
<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],因此:

代码语言:javascript
复制
<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中。

有人有解决这个问题的办法吗?

EN

回答 9

Stack Overflow用户

发布于 2014-11-25 09:10:13

您无法访问输入的原因是因为基础选项卡(或ng-repeat?)创建isolate scope。解决此问题的一种方法是使用controller as语法:

代码语言:javascript
复制
<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,如下所示:

代码语言:javascript
复制
function MyController () {
    var vm = this;
    vm.saveChanges = saveChanges;

    function saveChanges() {

       if(vm.myForm.$valid) { 
            // Save to db or whatever.
            vm.myForm.$setPristine();
       }
}
票数 213
EN

Stack Overflow用户

发布于 2014-04-09 22:18:55

您可以将窗体附加到父控制器中定义的某个对象。然后,您甚至可以从子作用域访问表单。

父控制器

代码语言:javascript
复制
$scope.forms = {};

在子作用域中一些模板

代码语言:javascript
复制
<form name="forms.form1">
</form>

问题是,表单不必在执行控制器中的代码时定义。所以你必须做这样的事情

代码语言:javascript
复制
$scope.$watch('forms.form1', function(form) {
  if(form) {
    // your code...
  }
});
票数 94
EN

Stack Overflow用户

发布于 2014-06-09 23:19:19

如果要将表单传递给控制器进行验证,只需将其作为参数传递给处理提交的方法即可。使用表单名称,因此对于原始问题,应该是这样的:

代码语言:javascript
复制
<button ng-click="submit(customerForm)">Save</button>
票数 91
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19568761

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档