同一页面多Vue实例下,为何无法通过v-on:click直接调用另一实例的方法?
问题原因解析
Vue 模板中的所有表达式、事件绑定的函数调用,仅能访问当前绑定实例的作用域内的属性和方法,不会自动访问全局作用域的变量。
你写在#app节点内的v-on:click表达式,归属app_1实例管理,查找变量时只会遍历app_1自身的data、methods、computed、props等实例属性,你没有将menu_mobile挂载到app_1的实例属性上,自然找不到这个变量,调用就会失效。
第二种写法生效的原因是:你定义在app_1内部的show_mobile_menu方法,函数的作用域继承自你定义Vue实例时的JS上下文,这个上下文可以访问到全局声明的menu_mobile变量,所以内部调用menu_mobile.show_menu()是可以正常寻址的。
如果希望直接在模板里调用,只需要把menu_mobile挂载到app_1的实例上即可,示例如下:
var app_1 = new Vue({ el: '#app', data: { // 将全局实例挂载到当前实例的data属性中,模板就能直接访问 menu_mobile: menu_mobile } })
配置完成后原来的v-on:click="menu_mobile.show_menu()"就可以正常运行。
内容的提问来源于stack exchange,提问作者ORStudios
相关产品推荐
相关产品推荐

