如何将数据推送到vue实例
How to push data to vue instance
我有一个简单的 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 值的方法有什么区别?
<ul id='app'>
<li v-for='flashMessage in flashMessages'>
{{flashMessage}}
</li>
</ul>
.
const app = new Vue({
el: '#app',
data() {
return {
flashMessages: [
"Hellow. Something is wrong!",
"Another message",
],
};
},
});
app.flashMessages.push("A message from Push");
这是一个最小的可行示例:https://jsfiddle.net/sheriffderek/fyb0j5rt/
您需要缩小范围。
它告诉你 app.vueFlashes
是未定义的。这可能是因为它在不同范围内的某个地方......或者其他什么/但错误是真实的 - 所以,听一下 - 并找出为什么它没有在你使用它的地方定义。
我有一个简单的 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 值的方法有什么区别?
<ul id='app'>
<li v-for='flashMessage in flashMessages'>
{{flashMessage}}
</li>
</ul>
.
const app = new Vue({
el: '#app',
data() {
return {
flashMessages: [
"Hellow. Something is wrong!",
"Another message",
],
};
},
});
app.flashMessages.push("A message from Push");
这是一个最小的可行示例:https://jsfiddle.net/sheriffderek/fyb0j5rt/
您需要缩小范围。
它告诉你 app.vueFlashes
是未定义的。这可能是因为它在不同范围内的某个地方......或者其他什么/但错误是真实的 - 所以,听一下 - 并找出为什么它没有在你使用它的地方定义。