指令中的ngModel控制器是否有任何选项可以在视图中显示与ngModel值不同的内容,或者我必须为输入编写自定义html指令?
我写了一个逗号分隔符指令 . 一切都很好,但ngModel值从_更改为字符串 ,
.
我的意思是我可以输入值 1000000
但它在视图中显示 1,000,000
吗?
Update:
在输入框中显示 1,000,000
,但其值为 1000000
.
Update 2
我知道 $formatters
和 $parsers
. 但问题是 $formatters
并没有损害实际值,但是当ngModel直接更改时,它不起作用,而不是通过输入input元素,并且 $parsers
观察所有更改,但也改变实际值 .
3 回答
使用过滤器来实现这一点
HTML
controller:
var app = angular.module('demoApp',[]);
你可以使用
ngModel.$formatters
:在这种情况下,模型将保持数字,但输入将显示格式化字符串 .
See documentation
回答你的问题......
我假设你想要一个 Number 作为模型,但是在用户输入的输入中用逗号分隔 String . 根据这个假设,我可以用 YES 回答你的问题,你可以这样做;这是如何做...
链接:CodePen Working Example
创建此示例的方式只允许将数字输入到输入中 . 您可以在每个$ filter中更改此选项 .
另外要注意的是,只使用您创建的过滤器,以便在数据进入过滤器时清理数据 . 角度过滤器主要用于静态值,因此当您想要在输入值时过滤它们时它们不起作用 .
即在这种情况下,如果我们没有通过删除(/ \ D / g)所有非数字来清理数据,我们将在字符串中使用逗号(和其他任何东西)进行拆分,连接和反转,结果将是崩溃 .