Angular JS绑定到控制器中的表单

时间:2014-04-29 05:15:21

标签: angularjs angularjs-scope

我有一个像这样初始化的表单 -

<div class="col-xs-12 col-md-8" ng-controller="myController">
                <form name="userForm" class="form-horizontal"  role="form" novalidate>
                    <div class="form-group">
                        <label for="inputb" class="col-xs-3 col-sm-3 control-label">Beam Width</label>
                        <div class="col-xs-6 col-sm-5">
                            <input type="text" class="form-control" name="inputb" placeholder="Input width in mm" ng-model="user.inputb" required>
                        </div>
                    </div>
                </form>
</div>

理想情况下,我应该能够在控制器内访问表格,如此---

angular.module("myApp",[])
    .controller("myController",function($http,$scope){
        //user is bound to the form inputs
        var i = $scope.userForm.inputb.$pristine;
        console.log(i); //expected to be true or false
        console.log($scope.userForm);
            console.log(userForm);

但是第一个控制台输出给出了消息 - 无法访问未定义的属性M. 第二个控制台输出发出明显的消息“未定义” 有趣的是第三个控制台输出确实给出了userForm对象! 这里发生了什么,为什么我无法按预期在控制器中按名称访问表单元素?为什么删除$ scope打印对象?这并没有解决问题,因为只有userForm.M。$ pristine再次“未定义”。

P.S。我正在调试控制器中需要它的东西。具体来说,这也没有在视图中工作,如果没有输入inputb,我想在其中显示错误消息。

1 个答案:

答案 0 :(得分:0)

好吧,似乎表单尚未初始化。正如您在this plunker中看到的,一切都在超时工作正常。但据我所知,$ scope.userForm并不打算以这种方式使用(在控制器init上)。它可能会被使用:

  1. 在模板中声明性地描述类,或禁用提交 在表达式中使用它永远不会产生异常。
  2. 提交。它肯定会在那个时刻初始化