Vue2:使用emit的JSON对象不起作用?

时间:2017-09-05 20:59:36

标签: javascript json vuejs2 vue-component

我正在尝试将JSON对象从子组件传递给父组件,但是某些东西没有像我期望的那样工作:

当我尝试阅读父javascript函数的适当性时,它会返回[Object object]

我不知道如何阅读整个JSON,考虑在子组件中JSON是我期望的。

这里是我的子组件函数(在METHODS中):

sendAllSteps : function(uscita){
//"uscita" is the json object
    this.$emit('mandapreventivo',{uscita});
return;     
},
index.html中的

                <lista-percorso :selezionati="il_tuo_percorso"
                            v-on:removeall="pathlengthTozero()"
                            v-on:vediservizi="mostraPercorso2"
                            v-on:rimuoviprezzo="priceremove($event)"
                            v-on:rimuoviprezzoparent="priceparentremove($event)"
                            v-on:mandapreventivo="postaTutto($event)"
                            ></lista-percorso>
main.js中的

postaTutto : function({uscita}){
    console.log("dati uscita "+ `${uscita}`);
    console.log(this.modello.lineaGialla);
    console.log(JSON.stringify(`${uscita}`));

    var exit = `${uscita}`;
    alert(exit);
    alert(exit[0].length);
    alert(JSON.stringify(`${uscita}`));
    var exit2 = exit.toString(`${uscita}`);
    alert(exit2);
//this return to me [object Object]

    this.isLoading=true;
    var config = {dataType: "jsonp"};

    axios.post(
            'url.something',
            //invia,
            {'serviziSelezionati':`${uscita}`},
            config          
        )
      .then(function (response) {
        this.isLoading=false;
        var risposta = JSON.stringify(response.data);
        console.log(risposta);
        alert("grazie per aver compilato il form!");
        return;
      })
      .catch(function (error) {
        this.isLoading=false;
        console.log(error);
        alert("qualcosa è andato storto");
        return;
      });

},

现在,我真的不知道如何查看$ {uscita}对象,当我发布数据时,有一个PHP编译器解释JSON并分配似乎空白的值

有人已经有这个问题吗? 提前谢谢。

1 个答案:

答案 0 :(得分:1)

问题出在这里。

var exit = `${uscita}`;

此代码采用uscita对象并基本上对其执行toString(),从而产生“[object Object]”。

这一行:

var exit2 = exit.toString(`${uscita}`);

不做任何事。 exit已经是一个字符串,toString()不带任何参数。结果与exit,“[object Object]”中的值相同。

“[object Object]”是随时对对象执行toString()的结果。

我希望您想要的提交uscita对象,您应该可以这样做:

axios.post("url.something", {'serviziSelezionati': uscita}, config)

Axios会根据需要将数据转换为JSON。

此外,您正在进行一些不必要的解构。只需传递uscita对象:

this.$emit('mandapreventivo', uscita)

这意味着你的方法可以只是

postaTutto : function(uscita){...}