当前位置: 首页 > 知识库问答 >
问题:

vuejs 3 data options 属性不再响应外部对象

金谭三
2023-03-14

我有一个应用程序,它通过共享一个全局javascript对象来与其他应用程序共享一个外部模块。

其中一个应用程序是用vue 2开发的,当全局对象在外部模块中更新时,vue 2的option data属性会完美更新,而在vue 3中则不会。我也尝试了新的反应属性,但什么也没做,这是一个错误吗?

无法对外部模块进行任何更改,因为它与其他应用程序共享,我如何让它在vue 3中工作?

以下是一些测试链接:

Vue 2共享外部对象

<script src="https://unpkg.com/vue"></script>
<script>
var EXTERNAL_OBJECT={
    name:"Bob",
    list:[{name:"Ivan"}]
}

function change_object(){
    EXTERNAL_OBJECT.name+="+++"
    EXTERNAL_OBJECT.list.push({name:"Carl"})
    

}
</script>

<button onClick="change_object()">change external object</button>

<div id="app">

  <div>
  {{share.name}}
  </div>
  <div v-for="item in share.list">
   {{item.name}}
  </div>
</div>

<script>
new Vue({
  el: '#app',
  data: {
    share:EXTERNAL_OBJECT
  }
})
</script>

Vue 3共享外部对象

<script src="https://unpkg.com/vue@3.2.4/dist/vue.global.js"></script>
<script>
var EXTERNAL_OBJECT={
    name:"Bob",
    list:[{name:"Ivan"}]
}

function change_object(){
    EXTERNAL_OBJECT.name+="+++"
    EXTERNAL_OBJECT.list.push({name:"Carl"})
    

}
</script>

<button onClick="change_object()">change external object</button>

<div id="app">

  <div>
  {{share.name}}
  </div>
  <div v-for="item in share.list">
   {{item.name}}
  </div>
</div>

<script>
const app = Vue.createApp({
  data () {
    return {
      share:EXTERNAL_OBJECT
    }
  }
  
});
app.mount('#app')
</script>

Vue 3 使用反应式属性共享外部对象

<script src="https://unpkg.com/vue@3.2.4/dist/vue.global.js"></script>
<script>
var EXTERNAL_OBJECT={
    name:"Bob",
    list:[{name:"Ivan"}]
}

function change_object(){
    EXTERNAL_OBJECT.name+="+++"
    EXTERNAL_OBJECT.list.push({name:"Carl"})
}
</script>

<button onClick="change_object()">change external object</button>

<div id="app">

  <div>
  {{share.name}}
  </div>
  <div v-for="item in share.list">
   {{item.name}}
  </div>
 
</div>
<script>
const { createApp, reactive } = Vue
const app = createApp({
setup(){
 let share = reactive(EXTERNAL_OBJECT)
  return {
  share
  }
},
  data () {
    return {
    msg:"reactive test"
    }
  }
  
});
app.mount('#app')
</script>

谢谢

共有1个答案

丁德义
2023-03-14

这有点难读...我只看Vue3的例子。你展示了多少文件?

无法直接在reactive属性中写入EXTERNAL_OBJECT?比如:

const EXTERNAL_OBJECT = reactive({ name:"Bob",
    list:[{name:"Ivan"}] });
 类似资料:
  • 我正在开发一个spring boot应用程序 我想用外部文件(例如)重写中的某些属性。 我尝试了几种方法: 中的“我的应用程序.属性”中的 我使用对其进行了测试。第一个方法只添加了属性,但没有重写它们。

  • 我已经查看了下面的线程,并遵循了其中给出的内容。仍然没有发生我的属性重写 Spring Boot-外部化属性 配置文件特定属性启用 Spring Boot外部配置 我在Tomcat 8.0.33和Spring boot starter web上,并在我的setenv中得到了这个。上海 在overrides文件夹中我得到了2个文件 1) <代码>应用程序。属性2)

  • 问题内容: 我在Tomcat 8.0.33和Spring Boot Starter Web上,并将其保存在我的setenv.sh中 在覆盖文件夹中,我有2个文件 1) 2) application.properties中有一个条目 我看到正确的log.level被输入到我的代码中,这意味着该命令正在运行。只是我不知道为什么我的超控未按预期发生 我的工作区中没有任何`PropertyPlacehol

  • 问题内容: 我在node.js上运行此代码 1)第一个console.log返回完整文档 2)第二个console.log返回未定义 我不明白为什么。 我需要执行类似 我该如何实现?我想念什么? 问题答案: 我怀疑您要获取的值不在您的中,而是存储在数据库中。 您有两种解决方案。您可以将其添加到您的文档中,然后Mongo可以将其绑定到您收到的对象。这是推荐的方法。 或者,您可以绕过猫鼬,并使用访问存

  • 我知道有很多关于这个的线程,但还没有一个解决我的问题。我有一个在Eclipse中运行的Spring Boot应用程序,我将参数外部化,以便部署到外部Tomcat并使属性远离战争。我将application.properties从src/main/Resources移至APP_ROOT/config。在catalina.sh,我添加了这个: 外部构建工作正常;然而,现在它不再从日食开始。我通过在启动

  • 我希望在运行时传递变量,一旦war文件部署在tomcat上。如何使用classplath中的application.properties以及另一个属性文件ex。abcd.properties位于specific directory.am基本上希望设置额外的类路径,并从该路径中的属性文件中读取值,以及war部署的默认类路径位置。 我使用Spring boot。其中一种方法是将所有属性传递到数据库端,