【发布时间】:2020-07-23 19:01:52
【问题描述】:
我有一个简单的 vue 实例,我希望将空数组作为 data.vueFlashes。:
const app = new Vue({
el: '#app',
data: {
vueFlashes: []
}
});
组件定义如下:
<template>
<transition name="fade">
<div id="flash-component" v-show="visible">
<span class="hide" @click="hide()">X</span>
{{message.message}}
</div>
</transition>
</template>
<script>
export default {
mounted: function() {
console.log('VUE component mounted.')
},
created: function()
{
this.show();
},
props: [
'message'
],
data: function() {
return {
visible: true
}
},
methods: {
show: function()
{
this.visible = true;
setTimeout(() => this.hide(), 5000);
},
hide: function()
{
this.visible = false;
}
}
}
</script>
然后我想用这种方式从外部填充 vueFlashes:
// This is Laravel blade template
<script>
...
@foreach (session('flash_notification', collect())->toArray() as $message)
app.vueFlashes.push( {!! json_encode($message) !!} ); // Error
@endforeach
...
但它给我一个错误:无法读取未定义的属性'push' 如果我使用临时 js 数组,然后将其分配给 app.vueFlashes 它可以工作:
<script>
...
let jsFlashes = [];
@foreach (session('flash_notification', collect())->toArray() as $message)
// jsFlashes.push( {!! json_encode($message) !!} );
@endforeach
app.vueFlashes = jsFlashes; // This works fine
这两种调用同一个 app.vueFlashes 值的方法有什么区别?
【问题讨论】:
-
@foreach来自哪里? -
它是 Laravel 刀片模板。代码中有注释。
标签: javascript vue.js push