我有一个项目,我从后端检索数据并使用vue.js在前端显示,我需要多次使用同一个应用程序或在应用程序中使用应用程序。
以下是https://jsfiddle.net/Lsc7hggs/4/:
的示例<!-- app in app -->
<div class="colorHandler">
<div class="nameHandler">
<p>[% nameAttr() %]</p>
<p>[% nameAttr() %]</p>
<p>[% randomColor() %]</p>
<p>[% randomColor() %]</p>
</div>
</div>
<hr> <!-- OR -->
<!-- multiple time the same app -->
<div class="nameHandler">
<p>[% nameAttr() %]</p>
</div>
<div class="nameHandler">
<p>[% nameAttr() %]</p>
</div>
<div class="colorHandler">
<p>[% randomColor() %]</p>
</div>
<div class="colorHandler">
<p>[% randomColor() %]</p>
</div>
有没有办法让这项工作?
答案 0 :(得分:3)
无法嵌套Vues。
你可以创建多个Vues。
const colorHandlers = Array.from(document.querySelectorAll(".colorHandler"))
for (let handler of colorHandlers){
new Vue({
el: handler,
methods:{
randomColor:function(){
var colors = "['#e6f0ff', '#000a1a' ,'#ffe680', '#ffcc00', '#ffd9b3']";
var parsed_colors = colors.match(/#[a-f0-9]{6}/g);
var randomIndex = Math.floor(Math.random() * parsed_colors.length);
var randomElement = parsed_colors[randomIndex];
return randomElement
}
},
delimiters: ["[%","%]"]
});
}
const nameHandlers = Array.from(document.querySelectorAll(".nameHandler"))
for (let handler of nameHandlers) {
new Vue({
el: handler,
methods:{
nameAttr:function(){
var nom_prenom = 'John Doe';
return nom_prenom
}
},
delimiters: ["[%","%]"]
});
}
您的更新fiddle。
但你也可以这样做。
new Vue({
el:"#app",
methods:{
randomColor:function(){
var colors = "['#e6f0ff', '#000a1a' ,'#ffe680', '#ffcc00', '#ffd9b3']";
var parsed_colors = colors.match(/#[a-f0-9]{6}/g);
var randomIndex = Math.floor(Math.random() * parsed_colors.length);
var randomElement = parsed_colors[randomIndex];
return randomElement
},
nameAttr:function(){
var nom_prenom = 'John Doe';
return nom_prenom
}
},
delimiters: ["[%","%]"]
})
更新了fiddle。
答案 1 :(得分:1)
我实际上根据伯特的答案写了一个小包。它允许语法:
import MultiVue from 'vue-multivue';
import AwesomeComponent from './Components/AwesomeComponent.vue';
new MultiVue('.my-app', {
components: {
AwesomeComponent
}
});