【发布时间】:2020-01-27 12:42:41
【问题描述】:
我正在尝试在加载视图并初始化自定义后动态更新 Vue JS 属性。我正在构建一个自定义 Vue 插件并使用 props 来传递选项,其中一个是我需要在组件加载后动态更新传递的值的对象,例如:
<div id="app">
<script>
var seedData = {
percent: 50,
name: 'Smith'
}
setInterval(() => {
seedData = {
percent: Math.random(),
name: 'Smith'
}
}, 1000)
</script>
<offers :parent-data="seedData"></offers>
</div>
Vue.component('offers', {
template: '<h1>Parent Data: {{ parentData.percent }}</h1>',
props: {
parentData: {
default: () => ({
percent: 0,
name: 'John'
}),
type: Object
},
}
});
// create a new Vue instance and mount it to our div element above with the id of app
var vm = new Vue({
el: '#app'
});
这将从offersData 加载初始名称/值,但是不会传递setInterval 上的新值。
我尝试在通过<offers> 加载的自定义 Vue 插件中添加一个观察器,但这似乎也不起作用:
watch: {
parentData: function (newVal) {
this.parentData = newVal
}
}
更新
以下是我的实现:
【问题讨论】:
-
我真的怀疑这是您使用的代码。模板引用的所有数据都必须在 Vue 实例 (
this) 的上下文中。粘贴真实代码.... -
我只需要在页面加载后更新
offersData的值,并将这些值传递到我的插件中。<offers>元素是一个 Vue JS 插件,加载到非 Vue 的普通网站中 -
您发布的不是 Vue 插件。 This 是 Vue 插件。如果您需要帮助,请在 codepen/jsfiddle 上发布真实代码或创建可重现的示例。你发的还不够
-
这是我需要做的代码笔,能够在 Vue 之外更新道具,我可能弄错了,我使用组件作为插件,请参阅:codepen.io/sts-ryan-holton/pen/VwYNzdZ
标签: javascript vue.js plugins vuejs2