Как читать карту и получить ключ и значения в LW C JavaScript? - PullRequest
0 голосов
/ 10 марта 2020

Данные поступают из контроллера, как Map<String,List<String>, и необходимо прочитать карту в Javascript. Я пытался использовать keyset () для получения ключа, но это не удалось.

Исходные данные на карте:

{"error": ["Поля ошибок: (FirstName) : FirstName требуется. "," Поля ошибок: (Телефон): Требуется номер телефона офиса. "," Поля ошибок: (): Требуется номер домашнего телефона "]}

В приведенных выше данных я хотел l oop Список значений на основе ключа 'error'.

Редактировать

Данная проблема решена с помощью приведенного ниже решения. Но теперь у меня проблема с построчным отображением сообщения об ошибке на странице 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 Required. Требуется номер телефона в офисе. Дом Требуется номер телефона.

HTML код:

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

                    </template>

1 Ответ

0 голосов
/ 10 марта 2020

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 и функции обратного вызова, вы можете go с array.map method

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

Или даже " функция стрелки "

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

Если вы только начинаете работать с такими компонентами Lightning Web Components, как https://trailhead.salesforce.com/en/content/learn/modules/modern-javascript-development, это может помочь. Или любой онлайн-курс по EC6 (EcmaScript 6, версия спецификации JavaScript, которую вы увидите во многих руководствах по LW C). Есть некоторые черные маги c, такие как оператор распространения, функции стрелок, к которым потребуется некоторое время, чтобы привыкнуть.

Нет ничего плохого в том, чтобы начать с написания более подробного, но удобочитаемого кода и постепенного перехода к более привлекательному синтаксису, особенно если ты в большой команде, и не все JS бог.

...