我非常喜欢ng-model属性如何直接绑定到我的模型,用户可以获得有关其更改的即时反馈。对于我的用例来说,这是完美的。但是,我不希望将无效值放入模型中,他们可以在计算中使用扳手。我不知道如果表单控件中的值有效,我只想更新模型。对于无效值,当模型值保持不变时,控制值可以改变。
如果我改变了角度(1.2rc)NgModelController的$ setViewValue实现的来源:
this.$setViewValue = function(value) {
...
if (this.$modelValue !== value) {
this.$modelValue = value;
...
}
};
对此:
this.$setViewValue = function(value) {
...
if (this.$modelValue !== value && this.$valid) {
this.$modelValue = value;
...
}
};
它似乎正是我想要的,但我不知道如何以正确的方式做到这一点。改变这种行为的正确方法是什么?或者我的尝试是否因某种原因注定要失败?
更新:添加了示例。
例如,请查看http://jsfiddle.net/FJvgK/1/ HTML:
<div ng-controller="MyCtrl">
{{validNumber}}
<form>
<input
type="number"
ng-model="validNumber"
required
min="10"
max="20"
/>
</form>
</div>
和JS:
var myApp = angular.module('myApp',[]);
function MyCtrl($scope) {
$scope.validNumber = 15;
}
数字显示10到20之间的值,但是我想要它,这样如果你突然在框中键入'8',或删除第二个数字,留下'1',最后一个有效数字仍显示在上面。也就是说,即使控件没有,模型也始终具有有效值。
答案 0 :(得分:7)
我认为AnugularJS验证器的默认行为是在传递的值无效时不更新模型。如果您查看developer guide并浏览Custom Validation
,这些示例还会显示模型未更新或已在UI中提供的无效值清除
答案 1 :(得分:2)
正如Chandermani所说,这是默认行为,这是一个显示它在行动中的例子:
<form name="myform">
<input type="text" name="myinput" ng-model="myvalue" ng-minlength="4" required>
</form>
Is the input valid ? {{ myform.myinput.$valid }} <br />
Input's value : {{ myvalue }}
{{myvalue}}在输入中至少输入4个字符之前不会显示任何内容。
最诚挚的问候。
修改强>
如果您需要默认值,我猜您可以使用计算值将您的值分解为2个值:
var validNumber = 15;
$scope.validNumber = function () {
if ($scope.myform.myNumber.$valid) return $scope.myNumber;
else return validNumber;
};
我在这里设置了一个示例:http://jsfiddle.net/7vtew/1/
答案 2 :(得分:2)
这是默认行为,但是,您可以使用ngModelOptions指令
对其进行修改$table = $wpdb->get_results('SELECT STRING, DATE, STRING02 FROM `CUSTOMERFILE` WHERE `code` = 2 AND `status` = 2 **AND STRING05 = selected option value**');
文档:https://docs.angularjs.org/api/ng/directive/ngModelOptions请参阅&#39;模型更新和验证&#39;
部分