开发者问题收集

什么时候“$viewValue”变为“NOT undefined”?

2016-11-03
1405

这是我计数输入文本中值长度的示例:

137334401

问题:如果输入中的值为null或neam ),单击 提交

431992098

然后,我尝试在输入中键入某些内容,删除它并再次单击 提交 。它应该有效。

我的问题:对于 输入[type = text] ,没有 默认值 带有属性 $ viewValue < /code>?

我的意思是:如果值是空或空的,则 form.myinput。$ viewValue 应该是 ''' 。因此,长度必须为 0

3个回答

尝试一下:

它将首先检查文本框的 nullempty 值,然后根据该值执行操作。

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>
Rohìt Jíndal
2016-11-03

您需要通过范围访问它。$scope.form.myinput.$viewValue.length

话虽如此,我不认为控制器应该知道表单,因为表单是一个视图概念。与表单变量有关的任何内容都不应进入您的控制器。我非常赞成根本不将 $scope 传递到您的控制器中,而是使用控制器作为语法。

Adrian Brand
2016-11-03

以下是我的做法。这只适用于 Angular 1.3 或更高版本,因为 1.2 不支持控制器。

let app = angular.module('myApp', []);
app.controller('myController', function () {
  var vm = this;
  vm.submit = function () {
    alert(vm.myinput);
  };
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.8/angular.min.js"></script>
<form id="myForm" name="myForm" novalidate ng-app="myApp" ng-controller="myController as vm">
  <input ng-model="vm.myinput" name="myinput" />
  <button ng-click="vm.submit()">Submit</button>
</form>
Adrian Brand
2016-11-03