You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Vue.js模型中获取外部方法生成的值?

解决Vue实例获取外部函数变量的方法

下面提供几种可行的实现方式,帮你把外部retrieval方法里的retName同步到Vue实例的data中:

方案1:让外部函数返回值,通过Vue方法调用

把按钮的点击事件绑定到Vue的方法里,在方法内调用外部函数并获取返回值,再赋值给data中的retName,这是最符合Vue规范的方式。

修改后的代码:

function retrieval(){
  const retName = "the cook is here"
  return retName // 返回变量值
}

new Vue({
  el: "#app",
  data: {
    retName: "",
  },
  methods: {
    toggle: function(todo){
      todo.done = !todo.done
    },
    getRetName() {
      this.retName = retrieval() // 调用外部函数并赋值
    }
  }
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>

<div id="app">
  <h2>Todos:</h2>
  <button @click="getRetName">Click</button> <!-- 使用Vue的点击指令 -->
  {{retName}}
</div>

方案2:外部函数接收Vue实例作为参数,直接修改data

如果必须保留原生onclick,可以把Vue实例传递给外部函数,让函数直接修改实例的data属性。

修改后的代码:

const vm = new Vue({
  el: "#app",
  data: {
    retName: "",
  },
  methods: {
    toggle: function(todo){
      todo.done = !todo.done
    }
  }
})

function retrieval(vueInstance){
  const retName = "the cook is here"
  vueInstance.retName = retName // 直接修改Vue实例的data
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>

<div id="app">
  <h2>Todos:</h2>
  <button onclick="retrieval(vm)">Click</button> <!-- 传递Vue实例 -->
  {{retName}}
</div>

方案3:将Vue实例设为全局变量,外部函数直接访问

把Vue实例赋值给全局变量,外部函数可以直接通过这个全局变量修改data,适合无法修改按钮绑定方式的场景。

修改后的代码:

let vueApp;

function retrieval(){
  const retName = "the cook is here"
  vueApp.retName = retName // 访问全局Vue实例修改data
}

vueApp = new Vue({
  el: "#app",
  data: {
    retName: "",
  },
  methods: {
    toggle: function(todo){
      todo.done = !todo.done
    }
  }
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>

<div id="app">
  <h2>Todos:</h2>
  <button onclick="retrieval()">Click</button>
  {{retName}}
</div>

注意事项

  • 优先选择方案1,避免全局变量带来的作用域污染问题,更符合Vue的开发习惯。
  • 方案2和3仅在必须使用原生onclick的场景下使用,注意全局变量的命名不要和其他代码冲突。

内容的提问来源于stack exchange,提问作者Vzupo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 08:03:25