如果 ng-required 为真,angular 删除 ng-model 变量

angular removes ng-model variable if ng-required is true

如标题..如何防止此类操作发生?这里给官网一个link,看例子。变量 user.name 绑定到第一个输入 userName,如果输入为空,则删除 object user.name。如何禁用 angularjs 的此功能?

您有 2 个选项

  1. 从输入标签中删除 required 它允许您将空字符串发送回后端

var app = angular.module('app', []);


app.controller('MyCtrl', function($scope) {
  $scope.params = {
    user: "John"
  };
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="app" ng-controller="MyCtrl">
  <input name="userName" ng-model="params.user" />
  <hr/>
  <pre>{{params| json}}</pre>
</div>

  1. 选项二在将表单发送到后端之前验证您的表单。

var app = angular.module('app', []);


app.controller('MyCtrl', function($scope) {
  $scope.user = {
    name: "John"
  };
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>



<div ng-app="app" ng-controller="MyCtrl">
  <form name="someForm">
    <input name="userName" ng-model="user.name" required name="userName" />
    <span ng-show="someForm.userName.$error.required">User Name required</span>
    <br/>{{user | json}}
    <br/>

    <button type="submit" ng-disabled="someForm.$invalid">Submit</button>
  </form>
</div>

尝试 ng-model-options="{allowInvalid: true}" 更新模型,即使是无效条目。

<input ng-model="user.name" required ng-model-options="{allowInvalid: true}">