从 ajax html 响应中附加多个 Vue2 组件无效
Appending multiple Vue2 components from ajax html response not working
我正在尝试使用 jquery ajax 附加多个 vuejs 组件,但它不起作用。
一切正常,直到响应 returns 多个组件,或组件中的组件。
代码如下:
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.14"></script>
<script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
<div id="app">
</div>
<script type="text/x-template" id="template-1">
<div>
<h1>Template 1 {{param}}</h1>
</div>
</script>
<script type="text/x-template" id="template-2">
<div>
<h1>Template 2 {{param}}</h1>
</div>
</script>
<script>
Vue.component('template-1', {
template: '#template-1',
props: ['param']
});
Vue.component('template-2', {
template: '#template-2',
props: ['param']
});
const vm = new Vue({
el: '#app'
});
</script>
<script>
function loadMore(){
$.get('/home/test', function (response) {
var MyComponent = Vue.extend({
template: response
});
var compiled = new MyComponent().$mount();
$('#app').append(compiled.$el);
});
}
loadMore();
</script>
如果以下响应来自 ajax,它会工作,并呈现一个组件:
<template-1 param="Test"></template-1>
如果来自 ajax 的以下响应 returns,它只呈现第一个组件:
<template-1 param="Test"></template-1>
<template-2 param="Test"></template-2>
如果来自 ajax 的以下响应 returns,它会呈现两个组件:
<div>
<template-1 param="Test"></template-1>
<template-2 param="Test"></template-2>
</div>
如果来自 ajax 的以下响应 returns,它只呈现父组件:
<template-1 param="Test">
<template-2 param="Test"></template-2>
</template-1>
有没有办法在不知道从服务器返回多少组件的情况下使这项工作始终有效?
我正在尝试使用 jquery ajax 附加多个 vuejs 组件,但它不起作用。 一切正常,直到响应 returns 多个组件,或组件中的组件。
代码如下:
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.14"></script>
<script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
<div id="app">
</div>
<script type="text/x-template" id="template-1">
<div>
<h1>Template 1 {{param}}</h1>
</div>
</script>
<script type="text/x-template" id="template-2">
<div>
<h1>Template 2 {{param}}</h1>
</div>
</script>
<script>
Vue.component('template-1', {
template: '#template-1',
props: ['param']
});
Vue.component('template-2', {
template: '#template-2',
props: ['param']
});
const vm = new Vue({
el: '#app'
});
</script>
<script>
function loadMore(){
$.get('/home/test', function (response) {
var MyComponent = Vue.extend({
template: response
});
var compiled = new MyComponent().$mount();
$('#app').append(compiled.$el);
});
}
loadMore();
</script>
如果以下响应来自 ajax,它会工作,并呈现一个组件:
<template-1 param="Test"></template-1>
如果来自 ajax 的以下响应 returns,它只呈现第一个组件:
<template-1 param="Test"></template-1>
<template-2 param="Test"></template-2>
如果来自 ajax 的以下响应 returns,它会呈现两个组件:
<div>
<template-1 param="Test"></template-1>
<template-2 param="Test"></template-2>
</div>
如果来自 ajax 的以下响应 returns,它只呈现父组件:
<template-1 param="Test">
<template-2 param="Test"></template-2>
</template-1>
有没有办法在不知道从服务器返回多少组件的情况下使这项工作始终有效?