我的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);
}
出现未定义。我错过了什么?
答案 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。
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;
控制器别名语法。你也可以在这种语法中使用$ scope,但是可以用来设置观察者,事件等等。
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;