我用 lodash全局导入。
window._ = require('lodash'); // app.js
当我在代码中使用它时,比如在methods中使用它时,它工作得很好。
{{_.get(user, 'address.name')}}
显示未定义错误。
Property or method "_" is not defined on the instance but referenced during render
为什么会出现这种情况?我可以重构创建一个新的变量,并在代码中分配值,它可以工作,但我想直接在模板上使用它。
对我的评论进行扩展。我通常不鼓励在VueJS模板中使用第三方utilhelper方法。当然,这是个人的选择,但让VueJS直接处理渲染是比较简单的(而且还能防止以后可能出现的反应性问题)。因此,你可以简单地使用一个计算的属性(或者一个方法,如果你需要传递参数)来生成字符串,然后插入到模板中。
例子:在你的模板中,你可以使用计算属性(或方法)来生成字符串,并将其插入到模板中。
computed: {
addressName() {
return _.get(this.user, 'address.name');
}
}
那么,在你的模板中,你可以简单的使用 {{ addressName }}
来渲染字符串。如果你需要更多的灵活性和抽象性的动态使用,你可以使用方法来代替。例如,如果你的路径是动态的,那么你可以创建一个方法从 this.user
附带 path
参数。
methods: {
userData(path) {
return _.get(this.user, path);
}
}
在你的模板中,你可以简单地使用 {{ userData('address.name') }}
.
这可能是因为渲染(所以对属性"_"的调用)是在他的实例化之前完成的。
在你的情况下,你可能需要在实例化之前设置 window._
在 created
生命周期回调,在渲染前调用。
但我的建议是在组件的 "data "属性中设置,甚至只导入和设置你需要的函数。
举个例子
import clone from 'lodash/clone'