Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.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
Vue.js Can';t使用模板中数据中的值。只有道具值起作用_Vue.js - Fatal编程技术网

Vue.js Can';t使用模板中数据中的值。只有道具值起作用

Vue.js Can';t使用模板中数据中的值。只有道具值起作用,vue.js,Vue.js,我从道具中获得价值。并依靠它改变阶级。以下是工作代码: <div class="modal" :class="{'is-active': aa}" > 没有什么不起作用的。模态窗口不显示。为什么? 如果将aa更改为isActive将isActive从数据移动到计算的,示例将停止工作 computed: { isActive() { return this.aa } } 并编辑您的closeModalWindow: closeModalWindow: function()

我从
道具中获得价值。并依靠它改变阶级。以下是工作代码:

<div class="modal" :class="{'is-active': aa}" >
没有什么不起作用的。模态窗口不显示。为什么?


如果将
aa
更改为
isActive

isActive
数据移动到
计算的
,示例将停止工作

computed:
{
  isActive() { return this.aa }
}
并编辑您的
closeModalWindow

  closeModalWindow: function()
  {
    this.$emit('my-event', false)
  }
您现在无法直接编辑您的
isActive
,因此只需将
false
作为有效负载传递即可


可能您遗漏了文档的这一部分:如果您在数据中使用prop,如下所示:

props: ['modalOpen'],
data () {
  return {
    isActive: this.modalOpen
  }
}
props: ['modalOpen'],
computed: {
  isActive () {
    return this.modalOpen
  }
}
您的
openmodel
值将仅作为
isActive
属性的初始值使用一次。因此,当您更改
openmodel
时,
isActive
将保持不变。但当您在computed属性中使用
OpenModel
时,如下所示:

props: ['modalOpen'],
data () {
  return {
    isActive: this.modalOpen
  }
}
props: ['modalOpen'],
computed: {
  isActive () {
    return this.modalOpen
  }
}
isActive
值保持被动,将反映
openmodel
更改

因此,在子组件中使用此原则时,不需要使用$emit:

在父项中:

<template>
  <my-modal :openModal="isActive">
</template>

<script>
  export default {
    data () {
      return {
        isActive: false
      }
    }
  }
</script>

导出默认值{
数据(){
返回{
isActive:错误
}
}
}
在模态中:

<template>
  <div v-if="isActive">
    ...
  </div>
</template>

<script>
  export default {
    props: ['modalOpen'],
    computed: {
      isActive () {
        return this.modalOpen
      }
    }
  }
</script>

...
导出默认值{
道具:['modalOpen'],
计算:{
主动的(){
把这个还给我
}
}
}

现在,您可以通过将父组件中的
isActive
属性更改为true/false来显示/隐藏模态,无需使用$emit方法。

该示例有什么问题?模态打开和关闭良好。如果将
aa
更改为
isActive
,它将停止工作。谢谢您的回答,但您能解释一下我的代码停止工作的原因吗?如果您的
isActive
属性保存在
数据中
它的值在呈现组件时取自
aa
属性(
false
)当
aa
更改时,它不会自动更改。如果您想在
aa
更改时更新它,
isActive
必须是
计算的
属性。我为什么要这样做。$emit('my-event',false)
?我是否正确理解它将向家长发出信号?是的,您告诉家长modal不应再处于活动状态。父对象将其
isActive
属性更新为
false
,从而隐藏模式。