gpt4 book ai didi

angularjs - 不要使用 ng-model 记录无效值

转载 作者:行者123 更新时间:2023-12-04 06:39:29 25 4
gpt4 key购买 nike

我真的很喜欢 ng-model 属性如何直接绑定(bind)到我的模型,并且用户可以立即获得有关更改的反馈。对于我的用例来说,这是完美的。但是,我不希望将无效值放入模型中,以便它们可以在计算中使用 Spanner 。我以某种方式希望仅在表单控件中的值有效时才更新模型。对于无效值,控制值改变而模型值保持固定是可以的。

如果我更改 angular (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”,最后一个有效数字仍会显示在上方。也就是说,模型始终具有有效值,即使控件没有。

最佳答案

我相信如果传递的值无效,AnugularJS 验证器的默认行为是不更新模型。如果您查看 developer guide并通过Custom Validation这些示例还表明模型未更新或因 UI 中提供的无效值而被清除

关于angularjs - 不要使用 ng-model 记录无效值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18676461/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com