【问题标题】:How to read Map<String,List<String>> and get key and values in LWC JavaScript?如何在 LWC JavaScript 中读取 Map<String,List<String>> 并获取键和值?
【发布时间】:2020-03-09 22:27:55
【问题描述】:

数据来自 Map&lt;String,List&lt;String&gt; 等控制器,需要在 Javascript 中读取 Map。我尝试使用 keyset() 获取密钥,但失败了。

地图中的原始数据是:

{"error":["错误字段: (FirstName) : FirstName required.","Error 字段:(电话):需要办公电话号码。","错误字段:(): 需要家庭电话号码"]}

在上面的数据中,我想根据 Key 'error' 循环值 List。

编辑

使用以下解决方案解决了上述问题。但是现在我在 HTML 页面中逐行显示错误消息时遇到了问题。我曾经使用 \n 来划分错误消息,但是在控制台中打印,它看起来不错。但是当我传递给 HTML 时,它再次彼此相邻显示。这是代码。

result['error'].forEach( x=>{                                   
                errMsg += x+ '\n';
             });      
             this.showErrorMessage = true;

控制台中的结果:

errorMessage*****

FirstName Required.
Office Phone Number Required.
House Phone number required

但在 HTML 中显示时,它会像这样并排显示:FirstName 必需。办公电话号码必填。需要家庭电话号码。

HTML 代码:

<template if:true={showErrorMessage}>
                        <div>
                            <h6 style="color: red;">{errMsg }</h6>
                        </div>

                    </template>

【问题讨论】:

    标签: salesforce salesforce-lightning


    【解决方案1】:

    JavaScript 没有 keyset 方法,您可能将它与 Apex 混淆了?

    你可以这样做,有点老派,但如果你想要可读性

    let x = {
        "error":[
            "Error Fields: (FirstName) : FirstName required.",
            "Error Fields: (Phone) : Office Phone Number Required.",
            "Error Fields: () : House Phone number required"
         ]
    };
    
    if(x && x.error && x.error.length){
        for(let i = 0; i < x.error.length; ++i){
            console.log(x.error[i]);
        }
    }
    

    或者,如果您对现代 JavaScript 和回调函数感到满意,您可以使用 array.map 方法

    x.error.map(function(row){
        console.log(row);
    });
    

    甚至"arrow function"

    console.log(x.error.map(i => i));
    

    如果您开始使用 Lightning Web 组件,https://trailhead.salesforce.com/en/content/learn/modules/modern-javascript-development 之类的线索可能会有所帮助。或者任何关于 EC6 的在线课程(EcmaScript 6,JavaScript 规范的版本,你会在一些 LWC 教程中看到很多)。有一些黑魔法,比如传播运算符,箭头函数,需要一段时间才能习惯。

    从编写更冗长但可读的代码开始并慢慢转向更高级的语法并没有错,特别是如果你在大团队中并且不是每个人都是 JS 上帝。

    【讨论】:

    • 谢谢,@eyescream。我已经以完全相同的方式进行了操作,并且可以正常工作。再次感谢您的回复。
    猜你喜欢
    • 2021-07-07
    • 2022-11-02
    • 1970-01-01
    • 2021-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多