Vue.js 将数据传递给指令?

Vue.js 将数据传递给指令?,vue.js,vuejs2,vue-directives,Vue.js,Vuejs2,Vue Directives,在中,它声明可以将各种参数传递给指令 所以我想传入一个值: v-my-directive="test" 但我得到了一个错误: Property or method "test" is not defined on the instance but referenced during render 如何将字符串传递给指令?该值是一个正则JavaScript表达式。这样,如果您想传递字符串,比如说'test',请使用: v-my-directive="'test'" 演示: Vue.dire

在中,它声明可以将各种参数传递给指令

所以我想传入一个值:

v-my-directive="test"
但我得到了一个错误:

Property or method "test" is not defined on the instance but referenced during render

如何将字符串传递给指令?

该值是一个正则JavaScript表达式。这样,如果您想传递字符串,比如说
'test'
,请使用:

v-my-directive="'test'"
演示:

Vue.directive('my-directive',函数(el,绑定){
console.log('directive expression:',binding.value)/=>“test”
})
新Vue({
el:“#应用程序”,
数据:{
消息:“您好,Vue.js!”
}
})

{{message}}


您必须引用字符串,否则它将在您的组件上下文中查找
测试
变量(其
道具
数据
):

在自定义指令中,您可以像在
binding.value
中一样访问传递的值:

Vue.directive('demo', {
  bind: function (el, binding, vnode) {
    var s = JSON.stringify
    el.innerHTML =
      'name: '       + s(binding.name) + '<br>' +
      'value: '      + s(binding.value) + '<br>' +
      'expression: ' + s(binding.expression) + '<br>' +
      'argument: '   + s(binding.arg) + '<br>' +
      'modifiers: '  + s(binding.modifiers) + '<br>' +
      'vnode keys: ' + Object.keys(vnode).join(', ')
  }
})
Vue.directive('demo'{
绑定:函数(el、绑定、vnode){
var s=JSON.stringify
el.innerHTML=
'name:'+s(binding.name)+'
'+ 'value:'+s(binding.value)+'
'+ '表达式:'+s(binding.expression)+'
'+ '参数:'+s(binding.arg)+'
'+ '修饰符:'+s(binding.modifiers)+'
'+ 'vnode键:'+Object.keys(vnode.join(',')) } })

请参阅指南的章节。

console.log(el.value);此项为空。实际上,应该在
console.log(binding.value)
中。谢谢-错过了该项!添加了一个演示,以防万一.console.log(el.value);此项为空。在指令中,必须使用
binding.value
访问该值
Vue.directive('demo', {
  bind: function (el, binding, vnode) {
    var s = JSON.stringify
    el.innerHTML =
      'name: '       + s(binding.name) + '<br>' +
      'value: '      + s(binding.value) + '<br>' +
      'expression: ' + s(binding.expression) + '<br>' +
      'argument: '   + s(binding.arg) + '<br>' +
      'modifiers: '  + s(binding.modifiers) + '<br>' +
      'vnode keys: ' + Object.keys(vnode).join(', ')
  }
})