如何从Vue.js 2中的自定义指令中获取文字表达式?

如何从Vue.js 2中的自定义指令中获取文字表达式?,vue.js,vuejs2,Vue.js,Vuejs2,我正在尝试将Vue 1.x自定义指令传输到Vue 2.x,但我找不到任何地方可以再次将表达式作为文本。假设此示例是我的自定义指令: <div v-custom="file.txt"></div> 将以字符串形式返回“file.txt” 在Vue2中 Vue.directive('custom'{ 绑定:函数(el,绑定){ console.log(binding.expression) } }) 会回来的 [Vue warn]:实例上未定义属性或方法“file” 但在

我正在尝试将Vue 1.x自定义指令传输到Vue 2.x,但我找不到任何地方可以再次将表达式作为文本。假设此示例是我的自定义指令:

<div v-custom="file.txt"></div>
将以字符串形式返回“file.txt”

在Vue2中

Vue.directive('custom'{
绑定:函数(el,绑定){
console.log(binding.expression)
}
})
会回来的

[Vue warn]:实例上未定义属性或方法“file” 但在渲染期间被引用。确保声明被动数据 数据选项中的属性

[Vue warn]:呈现函数出错:“TypeError:无法读取属性 未定义的“txt”


这意味着我在Vue2中的表达式不再是字符串,而是变量。现在如何让它返回字符串?

只需将文本用单引号括起来,使其成为字符串文字。但是,正如您在评论中所指出的,如果尝试访问
binding.expression
,它将包括包装单引号。相反,您应该使用
binding.value
属性

模板:

<div id="app">
  <div v-custom="'file.txt'"></div>
</div>
Vue.directive('custom', {
  bind: function (el, binding) {
    console.log(binding.value)
  }
})

new Vue({
    el: '#app'
})

.

这会使表达式成为文字,但也会将单引号添加到字符串中。我希望有一个解决方案,我不必去掉引号就能得到我想要的结果。这是正确的,因为您实际上是在请求绑定表达式。我已经更新了我的答案。您可以直接从包含未包装字符串文字的
binding.value
中获取值。是的,答案现在返回的字符串与Vue1中的字符串相同。完全不同的方法。