当前位置: 首页 > 面试题库 >

ngModel格式化程序和解析器

颜光临
2023-03-14
问题内容

我以不同的形式发布了相同的问题,但没有人回答。我没有清楚了解angular js中Formatter和Parsers的功能。

根据定义,格式化程序和解析器都与我相似。也许我错了,因为我是这个angularjs的新手。

格式化程序定义

每当模型值更改时,作为管道执行的函数数组。 依次调用每个函数,将值传递给下一个。用于格式化/转换值以在控件和验证中显示。

解析器定义

每当控件从DOM读取值时,作为管道执行的函数数组。 依次调用每个函数,将值传递给下一个。用于清除/转换值以及进行验证。为了进行验证,解析器应使用$
setValidity()更新有效性状态,并为无效值返回undefined。

请通过一个简单的示例帮助我了解这两个功能。两者的简单说明将不胜感激。


问题答案:

总结一下:

  • 格式化程序更改模型值在视图中的显示方式。
  • 解析器更改视图值在模型中的保存方式。

这是一个简单的示例,以NgModelController
api文档中
的示例为基础:

  //format text going to user (model to view)
  ngModel.$formatters.push(function(value) {
    return value.toUpperCase();
  });

  //format text from the user (view to model)
  ngModel.$parsers.push(function(value) {
    return value.toLowerCase();
  });

您可以看到它的运行情况:http :
//plnkr.co/UQ5q5FxyBzIeEjRYYVGX?plnkr=legacy

<input type="button" value="set to 'misko'" ng-click="data.name='misko'"/>
<input type="button" value="set to 'MISKO'" ng-click="data.name='MISKO'"/>
<input changecase ng-model="data.name" />

在(查看模型)中键入名称时,您将看到模型始终是小写字母。但是,当您单击按钮并以编程方式更改名称(要查看的模型)时,输入字段始终为大写。



 类似资料:
  • 此代码 导致 Java语言时间总体安排DateTimeParseException:无法分析文本“2020-11-27 01:00”:无法从TemporalAccessor获取OffsetDateTime:{OffsetSeconds=3600},ISO解析为java类型的2020-11-27。时间总体安排已解析 这不管用吗?

  • Go使用模式匹配的方式来支持日期格式化和解析。 package main import "fmt" import "time" func main() { p := fmt.Println // 这里有一个根据RFC3339来格式化日期的例子 t := time.Now() p(t.Format("2006-01-02T15:04:05Z07:00")) /

  • 问题内容: 什么是最好的在线代码美化器和格式化器?我不是在要求荧光笔。任何语言都可以。 问题答案: CSS:代码美化器 HTML:HTML Tidy,CleanUp HTML或通用的Pretty Diff Javascript:http://jsbeautifier.org/ PHP:http://beta.phpformatter.com/ SQL:http://dpriver.com/pp/s

  • 本文向大家介绍python字符串格式化方式解析,包括了python字符串格式化方式解析的使用技巧和注意事项,需要的朋友参考一下 1.%格式符 这种格式化并不是很好,因为它很冗长并且容易导致错误,比如没有正确显示元组或字典 2.str.format() 在处理多个参数和更长的字符串时仍然可能非常冗长 3.f-Strings f-strings 是指以 f 或 F 开头的字符串,其中以 {} 包含的表

  • 本文向大家介绍keras.utils.to_categorical和one hot格式解析,包括了keras.utils.to_categorical和one hot格式解析的使用技巧和注意事项,需要的朋友参考一下 keras.utils.to_categorical这个方法,源码中,它是这样写的: Converts a class vector (integers) to binary clas

  • 我在第二行有一个“error:next(int)has protected access in Random”,我以前使用过随机生成器的代码,但还没有遇到这个问题,有什么建议吗?扫描仪=新扫描仪(System.in);占位符=扫描器。nextInt;同样的情况也发生在这篇文章中,但有一个扫描仪。我相信这两个问题是相似的,我认为这将是一个快速修复,如果我知道如何做的权利,建议?