【发布时间】:2021-10-30 18:03:09
【问题描述】:
在我那个年代,我们有一个疯狂的东西,叫做包含或导入或其他什么。这意味着您在一个文件中编写了一些代码,然后在不同的文件中重复使用它。因此,您将在文件 x 中创建一个类,将此文件包含在另一个文件 y 中并从中实例化一个对象。基本上这意味着,即使文件 y 被写入文件 x,您也可以调用函数表单文件 y。
如何在vue.js 中完成这样的事情?我知道这样做的新方法称为“组件 api”。在网上我只找到了一些与 dom 耦合的非常复杂的例子,我不需要。
或者我应该使用mixins? Mixins 似乎至少可以工作,但他们有范围问题。
这是我要分享的文件(x.vue):
<script>
export default
{
data ()
{
return {
a: 'test'
}
}
,mounted ()
{
}
,methods:
{
test ()
{
console.log( "test : " + this.a );
}
}
}
</script>
y.vue:
<script>
import x from './x.vue'
export default {
name:"whatever"
,components:
{
x
}
,mounted()
{
x.a = "it is working";
x.test();
}
}
</script>
网络浏览器告诉我 a 不是函数。有谁知道错误在哪里?还是我应该创建一个 js 类并尝试导入它?
感谢您的帮助。
【问题讨论】:
-
添加了
mixins的外观答案。正如您在另一条评论中所说,这不会解决您将其称为x.test()的请求,但根据我的经验,您可以快速学习如何避免以与其他人匹配的方式命名您的函数:D -
对我的答案添加了编辑。可能与您的需求相匹配的东西。
-
也许我真的已经在使用 oltimer 了,但是使用比命名约定更好的方法来解决此类冲突已在几十年前得到解决。回到那个方法似乎很疯狂,但如果没有其他方法,我似乎别无选择。感谢您的帮助。
-
你读过我的回答吗?这是你想要的。在您的情况下,您可以致电
this.$super(x).sayHello();。 -
是的,我有,但这只会改变函数的调用方式。碰撞仍然可能发生。
标签: javascript vue.js vue-component