以下是我在输入文本中计算值长度的示例:
let app = angular.module('myApp', []);
app.controller('myController', function ($scope) {
$scope.submit = function ($event, form) {
$event.preventDefault();
alert(form.myinput.$viewValue.length)
};
});

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<form id="myForm" ng-model="myForm" name="myForm" novalidate ng-app="myApp" ng-controller="myController">
<input ng-model="myinput" name="myinput" />
<a href="#" ng-click="submit($event, myForm)">Submit</a>
</form>
&#13;
问题:如果输入中的值为null或为空(输入之前没有包含任何内容),则在单击submit
时会抛出此错误:
TypeError :无法读取属性&#39;长度&#39;未定义的 在a。$$ childScopeClass。$ childScopeClass。$ scope.submit
然后,我尝试在输入中输入内容,将其删除并再次点击submit
。它应该工作。
我的问题:对于input[type=text]
,是否有default value
属性$viewValue
?
我的意思是:如果值为null或为空,form.myinput.$viewValue
应为''
。因此,长度必须为0
。
答案 0 :(得分:2)
试试这个:
首先检查文本框的null
和empty
值,然后根据该值执行操作。
var app = angular.module('myApp', []);
app.controller('myController', function ($scope) {
$scope.submit = function () {
if($scope.myinput != null && $scope.myinput.length > 0) {
alert($scope.myinput.length);
} else {
alert("Please enter the text");
}
};
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<form id="myForm" name="myForm" novalidate ng-app="myApp" ng-controller="myController">
<input ng-model="myinput" name="myinput" />
<button ng-click="submit()">Submit</button>
</form>
答案 1 :(得分:1)
您需要通过示波器访问它。 $ scope.form.myinput。$ viewValue.length
话虽如此,我不相信控制者应该知道形式,因为形式是一种观点概念。与表单变量有关的任何内容都不应该进入控制器。我很擅长将$ scope传递给你的控制器并使用控制器作为语法。
答案 2 :(得分:0)
我将如何做到这一点。这仅适用于Angular 1.3或更高版本,因为1.2不支持控制器。
cmd.exe
let app = angular.module('myApp', []);
app.controller('myController', function () {
var vm = this;
vm.submit = function () {
alert(vm.myinput);
};
});