ルートインスタンスのready:
の中には、いくつかのコンポーネントが存在しない(HTMLで宣言されていない)場合にのみ行う必要があります。Vue.js:コンポーネントが存在するかどうかを確認してください
コンポーネントが存在するかどうかを確認するにはどうすればよいですか?
ルートインスタンスのready:
の中には、いくつかのコンポーネントが存在しない(HTMLで宣言されていない)場合にのみ行う必要があります。Vue.js:コンポーネントが存在するかどうかを確認してください
コンポーネントが存在するかどうかを確認するにはどうすればよいですか?
私は本当にこのより良い答えがあると思いますが、現時点でこの問題を解決します。準備ができて
、私はthis
を通じて子要素にアクセスする(またVue
することができる)と、その名前は私が期待したものであるかどうかを確認します
ready: function() {
for (var i = 0; i < this.$children.length; i++) {
if (
this.$children[i].$options.name == 'my_component_a'
|| this.$children[i].$options.name == 'my_component_b'
|| this.$children[i].$options.name == 'my_component_c'
) {
//do stuff
}
}
}
以前ます場合にも、それらを直接アクセスすることができます //テンプレート:準備ができてVueのコンポーネントから次に
<comp v-ref:my_component_ref></comp>
:
彼らは彼らのテンプレートで参照割り当てif (this.$refs.my_component_ref){
//do stuff
}
vm
が現在のVueインスタンスであるvm.$options
で利用可能なインスタンス化オプションから、Vueインスタンスのロード済み(グローバルおよび/またはローカル)コンポーネントのリストを取得できます。
vm.$options
プロパティは、Vueインスタンスのすべてのオプションを保持します。たとえば、vm.$options.components
は、現在のVueインスタンスのロードされたコンポーネントを含むオブジェクトを返しますvm
。
ただし、コンポーネントの登録方法によっては、Vue.component()
またはlocally within a Vue instance optionsをグローバルに使用する場合は、vm.$options.components
の構造が異なります。
コンポーネントがグローバルに登録されている場合、コンポーネントはvm.$options.components
[[Prototype]]リンケージまたはその__proto__
に追加されます。
コンポーネントがVueインスタンスオプション内でローカルに登録されている場合、コンポーネントはvm.$options.components
オブジェクトに直接そのプロパティとして追加されます。したがって、コンポーネントを見つけるためにプロト・チェーンを歩かなくて済むようにします。
次の例では、両方の状況でロードされたコンポーネントにアクセスする方法を示します。
ローカル登録コンポーネントに関連するコードの// [1]
および// [2]
のコメントに注目してください。
// the globally registered component
Vue.component('global-child', {
template: '<h2>A message from the global component</h2>'
});
var localComponent = Vue.extend({ template: '<h2>A message from the local component</h2>' });
// the root view model
new Vue({
el: 'body',
data: {
allComponents: [],
localComponents: [],
globalComponentIsLoaded: false
},
// local registered components
components: { // [1]
'local-child': localComponent
},
ready: function() {
this.localComponents = Object.keys(this.$options.components); // [2]
this.allComponents = loadedComponents.call(this);
this.globalComponentIsLoaded = componentExists.call(this, 'global-child');
}
});
function loadedComponents() {
var loaded = [];
var components = this.$options.components;
for (var key in components) {
loaded.push(key);
}
return loaded;
}
function componentExists(component) {
var components = loadedComponents.call(this);
if (components.indexOf(component) !== -1) {
return true;
}
return false;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/1.0.24/vue.js"></script>
<h1>A message from the root Vue instance</h1>
<p>All loaded components are: {{ allComponents | json }}</p>
<p>local components are: {{ localComponents | json }}</p>
<p><code><global-child></code> component is loaded: <strong>{{ globalComponentIsLoaded }}</strong></p>
<global-child></global-child>
<local-child></local-child>
私はあなたの説明に本当に感謝しています、残念なことに私のためにフォークしません(これは$ refs.compName) '.。私は、HTMLで使用されているコンポーネントを知りたいです。私はHTMLの
私はあなたが動的なメソッドが必要かどうかわからないんだけど、これはコンポーネントが存在するかどうかを判断するのに役立つことがあります。
たVue.options.components['CompOne']
:
は、V-REF 'てみてください'、https:// vuejs。 – MarcosRJJunior