javascript - Vue.js 在组件外设置数据

标签 javascript vue.js

我有一个组件,我想设置一个数据项 在组件之外。

我如何使用指令执行此操作?

我在想这样的事情:

Vue.directive('init', {
    bind: function(el, binding, vnode) {
        vnode.context[binding.arg] = binding.value;
    }
});

但它不起作用:

Vue.directive('init', {
  bind: function(el, binding, vnode) {
    vnode.context[binding.arg] = binding.value;
  }
});

Vue.component('test', {
	template: '<p>{{date}}</p>',
  data() {
  	return {
    		date: ""
    }
  }
});

new Vue({
  el: '#app'
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.4.1/vue.js"></script>


<div id="app">
  <test v-init:date="'2017-07-20 09:11:42'"></test>
</div>

知道如何让它发挥作用吗?

--编辑--

我不想为此使用 Prop !我有很多领域。

最佳答案

这应该有效。

Vue.directive('init', {
  bind: function(el, binding, vnode) {
    let component = el.__vue__
    component[binding.arg] = binding.value
  }
});

Vue.component('test', {
  template: '<p>{{date}}</p>',
  data() {
    return {
      date: ""
    }
  }
})

new Vue({
  el: '#app'
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.4.1/vue.js"></script>


<div id="app">
  <test v-init:date="'2017-07-20 09:11:42'"></test>
</div>

关于javascript - Vue.js 在组件外设置数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45212283/

相关文章:

javascript - 如何获取在 JavaScript 中有子项的内部内容表单标签?

vue.js - VueJS - 未知的本地操作类型 : addProductToCart, 全局类型:cart/addProductToCart

javascript - 上传图片时如何在vue组件上自动更新图片?

javascript - 如何在现有的 Materialise css 按钮和导航栏中添加自定义 css 样式?

javascript - Chrome(适用于 Android)媒体查询做错了?

javascript - 为字符串创建动态段落

vue.js - 用 jest : $route is always undefined 进行 Vue 测试

javascript - MongoDB 检查列表中的多个正则表达式匹配以进行自由文本搜索

javascript - 我们如何将参数传递给已经构建的 Vue JS 应用程序?

javascript - 如何使用intersectionObserver/Scrollspy在元素上显示特定类?