zoukankan      html  css  js  c++  java
  • 插值表达式和 JSON 字符串格式化运用

    项目中,我们通常会使用插值表达式,来实现从数据源到视图的单向数据绑定。

    一、插值表达式

    插值是指将表达式嵌入到被标记的文本中。默认情况下,插值使用双花括号 {{}} 作为定界符。

    以 Angular 为例,通过插值,Angular 执行以下任务

    1. 计算所有位于双花括号中的表达式。
    1. 将这些表达式的结果转换为字符串。
    1. 将这些结果融入相邻的字符串文本中。
    1. 将融合后的结果赋值给元素或指令的属性。

    也就是说,位于双花括号中的表达式都将会被转换为字符串

    我们来验证一下:

    testArray = [{a: "aaa"}, {b: "bbb"}, {c: "ccc"}];
    testObject = {a: "aaa", b: "bbb", c: "ccc"};
    testNumber = 1;
    testString = "1";
    testBoolean = true;
    // testBigInt = 1n;
    testSymbol = Symbol('1');
    testSet = new Set([1, 2])
    testMap = new Map([[1, 2], [2, 3]])
    
    <div>testObject: {{ testObject }}</div>
    <div>testArray: {{ testArray }}</div>
    <div>testNumber: {{ testNumber + 1 }}</div>
    <div>testString: {{ testString + 2 }}</div>
    <div>testBoolean: {{ testBoolean }}</div>
    <div>testSymbol: {{ testSymbol }}</div>
    <div>testSet: {{ testSet }}</div>
    <div>testMap: {{ testMap }}</div>
    

    插值表达式运算结果

    由上图可以看出 testObject 对象的输出是 [object Object]testNumber + 1 的输出是 2, testSet 的输出是 [object Set]

    以上图片展示的结果没有包含 testSymbol 的值,是因为报错了:

    Symbol转换为String类型报错

    由此可知,插值表达式确实是将表达式先计算出结果,然后转换为字符串,再融入相邻的的字符串文本中。

    由于表达式是由常量、变量、函数、运算符及圆括号组成的有意义的式子。通常可将变量看作表达式的特例。于是变量也满足插值表达式的执行方式。

    但有些时候,我们需要展示一个对象,这样的话插值表达式就显得无能为力了,不过我们可以通过 JSON.stringify()方法来将对象转换为 JSON 字符串。

    二、JSON.stringify()

    JSON.stringify() 方法来将对象转换为 JSON 字符串。

    testArray = JSON.stringify([{a: "aaa"}, {b: "bbb"}, {c: "ccc"}]);
    testObject = JSON.stringify({a: "aaa", b: "bbb", c: "ccc"});
    
    <div>testObject: {{ testObject }}</div>
    <div>testArray: {{ testArray }}</div>
    

    JSON.stringify()转换对象数组

    这样就解决了我们的问题,将对象类型的变量也通过插值表达式显示出来了。只是这个字符串可读性不好。

    JSON.stringify() 默认返回的是单行字符串,对于大型的 JSON 对象,可读性非常差。

    JSON 还可以接收两个参数,可以接受一个数组,作为第二个参数,指定参数对象的哪些属性需要转成字符串,第三个参数使得每个属性单独占据一行,并且将每个属性前面添加指定的前缀(不超过 10个字符)。

    如果我们需要讲全部属性进行转换,可以将第二个参数设置为 null。第三个参数设置为一个数字,表示每一个属性前面占几个空格。

    testArray = JSON.stringify([{a: "aaa"}, {b: "bbb"}, {c: "ccc"}], null, 4);
    testObject = JSON.stringify({a: "aaa", b: "bbb", c: "ccc"}, null, '	');
    
    <div>
        <div>testObject:</div>
        <textarea cols="30" rows="5">{{ testObject }}</textarea>
    </div>
    <div>
        <div>testArray:</div>
        <textarea cols="30" rows="12">{{ testArray }}</textarea>
    </div>
    

    JSON.stringify()第三个参数格式化JSON字符串

    testObject 来格式化 JSON 字符串,每一个属性前空 8 个空格。

    testArray 用数字 4 来格式化 JSON 字符串,每一个属性前空 4 个空格。

    对于大型的 JSON 对象,JSON 第三个参数用来格式化 JSON 字符串,将使得文本显示得更加美观和提高可读性。


    总结:对于页面中要显示对象、数组等集合时,我们可以采取如下方式:

    1. 使用 JSON.stringify() 方法将对象、数组转换为 JSON 字符串,并将其格式化为多行显示。
    2. 使用插值表达式,绑定经 JSON.stringify() 方法转化后的字符串。
    3. 将插值表达式作为 <textarea> 标签的内容,显示为多行文本。
    欢迎写出你的看法,一起成长!
  • 相关阅读:
    codna的安装与使用
    ubuntu 下修改MySQL 的root用户密码
    python中的排序
    CF 543C Remembering Strings
    CF 1119C Ramesses and Corner Inversion
    HihoCoder 1384 Genius ACM
    BZOJ3032 七夕祭
    Vjudge Code
    CF51C Three Base Stations
    Sumdiv POJ 1845
  • 原文地址:https://www.cnblogs.com/xinjie-just/p/14927739.html
Copyright © 2011-2022 走看看