Why isn't Vue reading my entire JSON object that I'm passing down through PHP as a prop?
我正在尝试使用道具将JSON对象向下传递到Vue组件中。 JSON对象是使用WordPress查询上的
当我在此变量上使用
但是,当我将JSON字符串传递给我的Vue道具时,所有Vue调试器吐出的都是
关于为什么我无法在Vue道具中获取完整的JSON对象字符串的任何想法吗?
1 2 3 4 5 6 7 | $newsPostQuery = new WP_Query($args); $posts = $newsPostQuery->posts[0]; $posts = json_encode($posts); $posts = addcslashes($posts, '"'); echo"[cc lang="php"]"; var_dump($posts); echo" |
";
echo $ posts;
?>
新Vue({
el:'.News-Feed',
组件: {
测试帖子:{
模板:"#test-posts",
道具:['testprop'],
ready(){
console.log(this.testprop);
this.testprop = JSON.parse(this.testprop);
},
}
}
});
code> pre>
对于任何在此问题上绊脚石的人,可以采用以下替代方法来产生一个字符串以供道具使用:
1 |
如果您愿意,可以将其包装为以下函数:
1 2 3 4 |
将其粘贴在您的functions.php文件中。该调用将其与vue组件一起使用:
1 2 3 | $posts = ...generate an array of data you want to pass into your component <testposts :testprop="<?= jsonToProp($posts);?>"></testposts> |
注意冒号:在prop前面-您需要此属性或vue将假定内容应解析为字符串而不是数据对象。
希望这可以帮助!
我不确定这是否是官方的vue.js"方式",但这是我处理预加载数据的方式。
首先,只需获取您的结果集,就不必担心任何编码/转义:
1 2 | $newsPostQuery = new WP_Query($args); $posts = $newsPostQuery->posts[0]; |
现在,在javascript中,为此预加载的数据创建一个全局变量。有时我使用一个对象,因此以后可以根据需要轻松添加更多变量:
1 2 3 |
这样,您不必担心转义,引号没有问题。
现在在您的vue.js代码中,当您要访问此数据时,可以参考
道具非常适合简单的标量值。但是这样的对象/ json很快就会变得混乱。