从全局范围访问定义的 Vue 组件
Access Defined Vue Components from the Global Scope
使用 Vue.js,是否可以从全局 javascript 范围访问实例化的 Vue.js 组件对象?还是 Vue 的内部以无法访问的方式实例化对象?
即我有定义组件的代码
Vue.component('component-name', {
/*...*/
});
然后标签使用该组件
<component-name>
/* can user templates with component objects vars {{foo}}
</component-name>
Vue 的模板渲染代码最终是访问一个 javascript 对象。我有办法通过代码查看那个实例化的 Vue 组件对象吗?像
var theComponent = getInstantiatedComponent('component-name');
我知道 Vue.js Chrome 调试器 -- 但我想知道是否可以通过代码访问这些对象 ,以及该语法是什么(我的 Chrome 插件技能太弱,无法了解他们在调试器插件中所做的事情)。
看起来 Vue 开发工具正在扫描 DOM 以查找 Vue 的根级实例。
查看扫描功能here。本质上,它会查看页面上的元素,试图找到带有 属性 __vue__
的元素。它从那里做出几个决定来确定它是否是根实例。
获得根后,您应该能够遍历它的属性(如 $children
)以查找组件实例。
可以使用任何其他组件访问任何全局注册的 Vue 组件:
this.$options.components.MyComponent
或:
this.$options.components['MyComponent']
如果在当前组件内部没有找到MyComponent,JS会在原型链中搜索,直到找到(或找不到),最后一步是注册所有全局组件的根Vue实例原型。
使用 Vue.js,是否可以从全局 javascript 范围访问实例化的 Vue.js 组件对象?还是 Vue 的内部以无法访问的方式实例化对象?
即我有定义组件的代码
Vue.component('component-name', {
/*...*/
});
然后标签使用该组件
<component-name>
/* can user templates with component objects vars {{foo}}
</component-name>
Vue 的模板渲染代码最终是访问一个 javascript 对象。我有办法通过代码查看那个实例化的 Vue 组件对象吗?像
var theComponent = getInstantiatedComponent('component-name');
我知道 Vue.js Chrome 调试器 -- 但我想知道是否可以通过代码访问这些对象 ,以及该语法是什么(我的 Chrome 插件技能太弱,无法了解他们在调试器插件中所做的事情)。
看起来 Vue 开发工具正在扫描 DOM 以查找 Vue 的根级实例。
查看扫描功能here。本质上,它会查看页面上的元素,试图找到带有 属性 __vue__
的元素。它从那里做出几个决定来确定它是否是根实例。
获得根后,您应该能够遍历它的属性(如 $children
)以查找组件实例。
可以使用任何其他组件访问任何全局注册的 Vue 组件:
this.$options.components.MyComponent
或:
this.$options.components['MyComponent']
如果在当前组件内部没有找到MyComponent,JS会在原型链中搜索,直到找到(或找不到),最后一步是注册所有全局组件的根Vue实例原型。