2017-07-09 111 views
2

有人知道如何繼承mixin及其模板?或者如何從mixin注入dinamically元素或組件?有沒有辦法在VueJS中繼承帶有mixin的模板

編輯: 我不想要修改問候組分,我有兩個混入:404Mixin,增加了一個方法raise404(),並顯示出100%的層和已經裝載LoaderMixin()方法,該方法示出了一個旋轉器在角落。我可以繼承他們的方法,但是我必須在我想要使用它的每個組件中複製html。

感謝

mixin = { 
 
    template: '<p>{{ foo }}</p>', 
 
    data() { 
 
    return { 
 
     foo: 'Hello', 
 
    }; 
 
    }, 
 
} 
 

 
// This should be <div><p>Hello</p><p>World!</p></div> 
 
Vue.component('greeting', { 
 
    mixins: [mixin], 
 
    template: '<div><p>World!</p></div>' 
 
}); 
 

 
var vm = new Vue({ 
 
    el: '#app' 
 
});
<script src="https://cdn.jsdelivr.net/vue/1.0.16/vue.js"></script> 
 
<div id="app"> 
 
    <greeting></greeting> 
 
</div>

+0

你能解釋一下你實際上想要完成什麼嗎?你的示例代碼似乎工作正常。 – Soviut

+0

我想繼承mixin模板,我想打印'

Hello

World!

',我有一個更復雜的代碼,但是我已經創建了示例代碼來表示問題。 – Ali

+0

當然,至少乍一看你缺少先決條件。 –

回答

3

你不能「繼承」在你的例子一樣的mixin模板,如果有可能會有必須合併模板的一種標準化的方式。

由於看起來您真正想要做的就是繼承模板,爲什麼不使用具有插槽的組件組合?

Vue.component('not-found', { 
 
    template: '#not-found', 
 
    methods: { 
 
    doSomethingSpecial() { 
 
     alert('Hi there'); 
 
    }, 
 
    }, 
 
}); 
 

 
new Vue({ 
 
    el: '#app', 
 
    data() { 
 
    return { 
 
     notFoundVisible: false, 
 
    }; 
 
    }, 
 
});
.not-found { 
 
    background-color: white; 
 
    text-align: center; 
 
    font-size: 30px; 
 
    position: fixed; 
 
    left: 0; 
 
    top: 0; 
 
    right: 0; 
 
    bottom: 0; 
 
}
<script src="https://cdn.jsdelivr.net/vue/1.0.16/vue.js"></script> 
 

 
<template id="not-found"> 
 
    <div class="not-found"> 
 
    <h1>404 Not Found</h1> 
 
    <slot></slot> 
 
    </div> 
 
</template> 
 

 
<div id="app"> 
 
    <not-found v-show="notFoundVisible" @click="notFoundVisible = false" v-ref:not-found>The resource was not found</not-found> 
 
    <button @click="notFoundVisible = true">Click Me</button> 
 
    <button @click="$refs.notFound.doSomethingSpecial()">Do Something Special</button> 
 
</div>

有,爲什麼你需要混入這些組件,而不是將它們組成在一起什麼特別的原因?

+1

是的,我有類似的東西,但我有$ refs之前使用加載方法,並且它的工作我必須使用道具和自定義方法,然後它變得太亂,然後我決定使用mixins,我想知道如果它可能是更透明。 – Ali

相關問題