Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么在以后更新数据时v-if不会受到影响?_Javascript_Vue.js - Fatal编程技术网

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功能强大得多,您已经做出了正确的选择