Как я могу получить доступ к функциям стрелки внутри другой функции? - PullRequest
0 голосов
/ 21 мая 2019

Я делаю функцию для преобразования массива и возврата строки, но она работает только в том случае, если я использую традиционную функцию, когда пытаюсь использовать функции со стрелками и запускаю код, покажу мне ошибку ниже:

Невозможно получить доступ к 'convertStringToForm' до инициализации

Мой код:

const convertStringToForm = (array) => {

    var stringOfArray = ""

    for(let i=0; i<array.length; i++){
        stringOfArray += "{&quot;id&quot;:" + array[i]['id'] + ",&quot;descricao&quot;:&quot;" + array[i]['descricao'] + "&quot;}";
        if(i < (array.length - 1))
            stringOfArray += ",";
    }

    return stringOfArray;

}

function addPergunta(ev, categoria, tipo){
    let tipoConvertido = convertStringToForm(tipo);
    console.log(tipoConvertido);
}

Позвольте мне немного объяснить, что я делаю, у меня есть массив из PHP и отправить его в Javascriptчерез функцию, а затем внутри функции javascript я использую «for» для передачи этой информации, обработанной на мой взгляд.

Я получу этот массив ниже:

[          
  {"id":1,"descricao":"Influente","created_at":null,"updated_at":null},
  {"id":1,"descricao":"Influente","created_at":null,"updated_at":null},
]

Если я верну это моемувид, то он не отображается, страница показывает мне [Object Object] [Object Object], если кто-то знает лучший способ решить эту проблему, я буду благодарен.Чтобы решить проблему, я создаю функцию "convertStringToForm", эта функция возвращает строку, обработанную, как показано ниже:

{&quot;id&quot;:" + 2 + ",&quot;descricao&quot;:&quot;" + someText + "&quot;},
{&quot;id&quot;:" + 2 + ",&quot;descricao&quot;:&quot;" + someText + "&quot;}

Я хочу знать, как использовать функции со стрелками вместо традиционных функций, приведенный ниже код работает нормально.

function convertStringToForm(array) {

    var stringOfArray = ""

    for(let i=0; i<array.length; i++){
        stringOfArray += "{&quot;id&quot;:" + array[i]['id'] + ",&quot;descricao&quot;:&quot;" + array[i]['descricao'] + "&quot;}";
        if(i < (array.length - 1))
            stringOfArray += ",";
    }

    return stringOfArray;

}

function addPergunta(ev, categoria, tipo){
    let tipoConvertido = convertStringToForm(tipo);
    console.log(tipoConvertido);
}

Ниже я объясню вопрос лучше.

Итак, я попытался использовать JSON.parse (), но не сработал.Как @SomeshMukherjee сказал, что моя точка зрения не является синтаксисом, я просто спрашиваю, зачем выдвигать эту ошибку на моем экране, когда я пытаюсь вызвать функцию стрелки внутри другой функции.

У меня есть эта кнопка на моей странице:

 <button onclick="addResposta(this, {{App\Tipo::all()}} )" id="btnaddResposta" type="button" class="btn btn-primary"> Text </button>

{{App \ Tipo :: all ()}} Вот так я получаю свой массив из PHP / Laravel.

Моя функция создает этокогда я нажимаю на эту кнопку:

<button type="button" onClick="return addPergunta(this, {{App\Categoria::all()}}, {{App\Tipo::all()}} )" class="btn btn-primary"><i class="fas fa-plus-circle"></i> Adicionar Pergunta</button>

Проблема в том, что если в моей функции я делаю что-то вроде

html +="<button onclick='addResposta(this," + tipo + ")' id='btnaddResposta' type='button' class='btn btn-primary'>";

, то получаю это, когда проверяю свой код:

<button onclick="addResposta(this, [Object Object] [Object Object])" id="btnaddResposta" type="button" class="btn btn-primary"> Text </button>

Итак, чтобы решить эту проблему, я создал функцию, которая преобразует объект в нужную мне строку, затем моя кнопка получает правильный массив и выглядит так:

<button onclick="addResposta(this, [{&quot;id&quot;:1,&quot;descricao&quot;:&quot;Influente&quot;,&quot;created_at&quot;:null,&quot;updated_at&quot;:null},{&quot;id&quot;:2,&quot;descricao&quot;:&quot;Conforme&quot;,&quot;created_at&quot;:null,&quot;updated_at&quot;:null},{&quot;id&quot;:3,&quot;descricao&quot;:&quot;Dominante&quot;,&quot;created_at&quot;:null,&quot;updated_at&quot;:null},{&quot;id&quot;:4,&quot;descricao&quot;:&quot;Est\u00e1vel&quot;,&quot;created_at&quot;:null,&quot;updated_at&quot;:null}] )" id="btnaddResposta" type="button" class="btn btn-primary">

Причина, по которой я сделал этовопрос в том, что я хочу лучше понять функции стрелок, если я нарушаю какие-либо правила сообщества, прошу прощения за это, я новичок здесь.

Спасибо за все ответы.# Мир

Ответы [ 2 ]

0 голосов
/ 21 мая 2019

Попробуйте заменить:

const convertStringToForm = (array) => {

на:

var convertStringToForm = (array) => {
0 голосов
/ 21 мая 2019

Если я верну это в свое представление, то оно не будет отображено, на странице будет показано [Объект объекта] [Объект объекта]

[Object Object] - это просто строковое представление по умолчанию дляобъект.Если вы хотите прочитать его свойства, вам просто нужно сделать это или отформатировать их в соответствующую строку.

var data = [          
  {"id":1,"descricao":"Influente","created_at":null,"updated_at":null},
  {"id":1,"descricao":"Influente","created_at":null,"updated_at":null},
];

var eg1 = document.querySelector("#example1");
for(var i = 0;i<data.length;i++){
 var elem = document.createElement("div");
 elem.innerText = data[i];
 eg1.appendChild(elem);
}

var eg2 = document.querySelector("#example2");
for(var i = 0;i<data.length;i++){
 var elem = document.createElement("div");
 elem.innerText = data[i].id + ":" + data[i].descricao;
 eg1.appendChild(elem);
}
var eg3 = document.querySelector("#example3");
for(var i = 0;i<data.length;i++){
 var elem = document.createElement("div");
 elem.innerText = JSON.stringify(data[i]);
 eg1.appendChild(elem);
}
<div id="example1"></div>
<div id="example2"></div>
<div id="example3"></div>

Выше вы можете увидеть 3 примера.

  • Первый просто добавляет элемент массива напрямую, и поэтому браузер просто интерпретирует это как [object Object].
  • Второй фактически читает интересующие свойства и строит необходимую строку.
  • Третий использует JSON.stringify для создания строкового представления объекта javascript.
...