Javascript 为什么在以后更新数据时v-if不会受到影响?
如果我要创建一个如下所示的元素:Javascript 为什么在以后更新数据时v-if不会受到影响?,javascript,vue.js,Javascript,Vue.js,如果我要创建一个如下所示的元素: <div id="helloWorldDiv" v-if="visible"> Hello World </div> 我希望行'helloWorld.visible=true'将显示元素,但它无效。有人能解释为什么这不起作用吗 首先,我建议不要从外部操作Vue实例。随着应用程序的发展,维护它会变得更加困难 但是,关于您的问题,您的JSFIDLE存在许多问题: 您从未将visible设置为true 在show函数中,您将hell
<div id="helloWorldDiv" v-if="visible">
Hello World
</div>
我希望行'helloWorld.visible=true代码>'将显示元素,但它无效。有人能解释为什么这不起作用吗
首先,我建议不要从外部操作Vue实例。随着应用程序的发展,维护它会变得更加困难
但是,关于您的问题,您的JSFIDLE存在许多问题:
- 您从未将
visible
设置为true
- 在
show
函数中,您将helloWorld
拼写为helloWolrd
- 需要将
show
函数和helloWorld
变量附加到窗口,以便从onclick
事件全局访问它们
因此,如果将javascript更新为:
var helloWorld = new Vue({
el: "#helloWorldDiv",
data: {
visible: false
}
});
function show() {
helloWorld.visible = true;
};
window.helloWorld = helloWorld;
window.show = show;
您的代码工作正常。首先,我建议不要从外部操作Vue实例。随着应用程序的发展,维护它会变得更加困难
但是,关于您的问题,您的JSFIDLE存在许多问题:
- 您从未将
visible
设置为true
- 在
show
函数中,您将helloWorld
拼写为helloWolrd
- 需要将
show
函数和helloWorld
变量附加到窗口,以便从onclick
事件全局访问它们
因此,如果将javascript更新为:
var helloWorld = new Vue({
el: "#helloWorldDiv",
data: {
visible: false
}
});
function show() {
helloWorld.visible = true;
};
window.helloWorld = helloWorld;
window.show = show;
您的代码工作正常。我认为您已经开始使用Vue.js,这很好
您需要在示例应用程序中进行一些更改。检查这把小提琴:
正如您在该示例中所看到的,您的show()
函数需要在Vue应用程序的方法中定义。此外,显示按钮需要是应用程序模板的一部分,而不是其外部
您可以在Vue文档和在线教程中找到更多信息。我认为您已经开始使用Vue.js,这非常棒
您需要在示例应用程序中进行一些更改。检查这把小提琴:
正如您在该示例中所看到的,您的show()
函数需要在Vue应用程序的方法中定义。此外,显示按钮需要是应用程序模板的一部分,而不是其外部
您可以在Vue文档和在线教程中找到更多内容。还有一件事:您的按钮需要使用@单击,而不是onclick
,调用组件方法,如下所示:
啊,好的,谢谢。那么,我是否只为整个应用程序创建一个Vue实例,而不是为我希望成为反应式的每个元素创建一个实例?您只需要为整个页面创建一个Vue实例。应用程序内部可以有多个组件,如页眉、页脚等。这些组件的数据模型由Vue的单个实例集中管理,并且在更改时会自动更新。啊,这是我的问题。我正在尝试将我的SPA内置JQuery移植到Vue,文档使它看起来像每个元素都有单独的实例。每个元素都可以是组件(自定义元素),而不是完整实例。您可以使用类似于etc的功能。Vue比jQuery功能强大得多,而且您做出了正确的选择还有一件事:您的按钮需要使用@click
,而不是onclick
,调用组件方法,如下所示:
啊,好的,谢谢。那么,我是否只为整个应用程序创建一个Vue实例,而不是为我希望成为反应式的每个元素创建一个实例?您只需要为整个页面创建一个Vue实例。应用程序内部可以有多个组件,如页眉、页脚等。这些组件的数据模型由Vue的单个实例集中管理,并且在更改时会自动更新。啊,这是我的问题。我正在尝试将我的SPA内置JQuery移植到Vue,文档使它看起来像每个元素都有单独的实例。每个元素都可以是组件(自定义元素),而不是完整实例。您可以使用诸如等功能。Vue比jQuery功能强大得多,您已经做出了正确的选择