无法使用AngularJS访问表单字段

时间:2016-11-11 16:04:54

标签: angularjs

我的Angular应用程序中有以下表单:

".*?"

在我的控制器中我有:

<form id="form1">
    <fieldset>
       <input type="text" name="field1" ng-model="frm.myID" />
       <input type="button" name="btnProcess" class="action-button" value="Process" ng-click="Process()" />
   </fieldset>
</form>

var frm = this; $scope.Process = function() { console.log(frm.myID); } 出现未定义。我错过了什么?

3 个答案:

答案 0 :(得分:1)

您将控制器功能分配给控制器代码中的frm变量,因此正确的console.log应为console.log(frm.frm.myId)。当然,如果您没有使用controller as语法。

<强>更新 你可能不需要为此而烦恼。因此,请尝试删除此var frm = this。它将与console.log console.log($scope.frm.id)

一起使用

答案 1 :(得分:0)

myapp= angular.module("app",[])
       myapp.controller("yourControllerName",function($scope){
    var frm = this;
    this.myID = ""; // ur missing
    this.Process = function() {
      
       console.log(frm.myID);

    }
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.16/angular.min.js"></script>
<div ng-app="app" ng-controller="yourControllerName as frm">
<form id="form1">
    <fieldset>
       <input type="text" name="field1" ng-model="frm.myID" />
     
       <input type="button" name="btnProcess" class="action-button" value="Process" ng-click="frm.Process()" />
   </fieldset>
</form>
</div>

答案 2 :(得分:0)

您没有使用$ scope上定义的对象。请查看以下代码段。

在您的控制器中,您似乎混合了编码样式,即$ scope语法与控制器别名语法,请使用一种方法。

另请将您的对象初始化为空对象,即$scope.frm = {};

$ scope syntax。

&#13;
&#13;
angular
  .module('demo', [])
  .controller('DefaultController', DefaultController);

DefaultController.$inject = ['$scope'];

function DefaultController($scope) {
  $scope.frm = {};

  $scope.Process = function() {
    console.log($scope.frm.myID);
  }
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="demo">
  <div ng-controller="DefaultController">
    <form id="form1">
      <fieldset>
        <input type="text" name="field1" ng-model="frm.myID" />
        <input type="button" name="btnProcess" class="action-button" value="Process" ng-click="Process()" />
      </fieldset>
    </form>
  </div>
</div>
&#13;
&#13;
&#13;

控制器别名语法。你也可以在这种语法中使用$ scope,但是可以用来设置观察者,事件等等。

&#13;
&#13;
angular
  .module('demo', [])
  .controller('DefaultController', DefaultController);

function DefaultController() {
  var vm = this;
  vm.frm = {};
  vm.process = process;

  function process() {
    console.log(vm.frm.myID);
  }
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="demo">
  <div ng-controller="DefaultController as ctrl">
    <form id="form1">
      <fieldset>
        <input type="text" name="field1" ng-model="ctrl.frm.myID" />
        <input type="button" name="btnProcess" class="action-button" value="Process" ng-click="ctrl.process()" />
      </fieldset>
    </form>
  </div>
</div>
&#13;
&#13;
&#13;