Vue.js VueJs渲染模板问题

Vue.js VueJs渲染模板问题,vue.js,Vue.js,当我使用单独的数据创建多个模板时,我有一个问题需要将模型中的数据填充到代码中。我需要的是,第一个模板在firstFormDetails数组中渲染的对象数量是第一个模板的两倍,而第二个模板渲染的对象数量相同。下面是我的代码示例: <div id="app"> <first v-for="item in secondFormDetails" track-by="id"></first> <second v-for="item in firstFor

当我使用单独的数据创建多个模板时,我有一个问题需要将模型中的数据填充到代码中。我需要的是,第一个模板在firstFormDetails数组中渲染的对象数量是第一个模板的两倍,而第二个模板渲染的对象数量相同。下面是我的代码示例:

 <div id="app">
  <first v-for="item in secondFormDetails" track-by="id"></first>
  <second v-for="item in firstFormDetails" track-by="id"></second>
 </div>

 <template id="template-first">
  <div> {{ item.docNumber }}</div>
 </template>

 <template id="template-second">
  <div> {{ item.docNumber }}</div>
 </template>

您必须定义您使用的组件。让我们尝试使用以下方法:

 <div id="app">
  <first v-for="item in secondFormDetails" track-by="id"></first>
  <second v-for="item in firstFormDetails" track-by="id"></second>
 </div>

 <template id="template-first">
  <div> {{ item.docNumber }}</div>
 </template>

 <template id="template-second">
  <div> {{ item.docNumber }}</div>
 </template>
 var first = Vue.component('first', {
   template: '#template-first',
   data: function() {
     return {
       firstFormDetails: [
         {docNumber: 7},
         {docNumber: 7777},
         {docNumber: 10000}
       ]
     }
   }
 });

 var second = Vue.component('second', {
   template: '#template-second',
   data: function() {
      return {
        secondFormDetails: [
          {docNumber: 1908},
          {docNumber: 7777},
          {docNumber: 10000}
        ]
      }
   }
 });

new Vue({
  el: '#app',
  components: {
    'first': first,
    'second': second
  }
});

@vbranden正确,将
v-for
移动到部件中

 <div id="app">
  <first v-for="item in secondFormDetails" track-by="id"></first>
  <second v-for="item in firstFormDetails" track-by="id"></second>
 </div>

 <template id="template-first">
  <div> {{ item.docNumber }}</div>
 </template>

 <template id="template-second">
  <div> {{ item.docNumber }}</div>
 </template>
 <template id="template-first">
  <div v-for="item in firstFormDetails"> {{ item.docNumber }}</div>
 </template>

 <template id="template-second">
  <div v-for="item in secondFormDetails"> {{ item.docNumber }}</div>
 </template>

{{item.docNumber}
{{item.docNumber}

此外,在@johnnynotsoluck的回答中,您需要在v-for之外添加一个包装器元素,因为它里面只允许一个元素

 <div id="app">
  <first v-for="item in secondFormDetails" track-by="id"></first>
  <second v-for="item in firstFormDetails" track-by="id"></second>
 </div>

 <template id="template-first">
  <div> {{ item.docNumber }}</div>
 </template>

 <template id="template-second">
  <div> {{ item.docNumber }}</div>
 </template>
<template id="template-first">
  <div class="form-details">
    <div v-for="item in firstFormDetails"> {{ item.docNumber }}</div>
  </div>
</template>

{{item.docNumber}
var first=Vue.component('first'{
模板:“#模板优先”,
道具:['item']
});
var second=Vue.component('second'{
模板:“#第二个模板”,
道具:['item']
});
新Vue({
el:“#应用程序”,
组成部分:{
"第一":第一,,
“第二”:第二
},
数据:函数(){
返回{
FirstForm详细信息:[
{docNumber:7},
{docNumber:7777},
{docNumber:10000}
],
第二种形式详情:[
{docNumber:1908},
{docNumber:7777},
{docNumber:10000}
]
}
}
});

{{item.docNumber}
{{item.docNumber}

加载Vue应用程序时,它会查找组件字段;如果未定义组件字段,则不会加载组件;如果已定义组件字段,则Vue会查找组件的定义,并对其进行语法检查分析;一旦语法正确,则会绑定组件。对于嵌套组件,这种情况会递归发生

 <div id="app">
  <first v-for="item in secondFormDetails" track-by="id"></first>
  <second v-for="item in firstFormDetails" track-by="id"></second>
 </div>

 <template id="template-first">
  <div> {{ item.docNumber }}</div>
 </template>

 <template id="template-second">
  <div> {{ item.docNumber }}</div>
 </template>

注册组件是必需的

您引用的数据不正确。您的数据需要位于父组件中才能使用v-forI我需要在组件之间分割数据,因为每个模板有不同的HTML,不同的数据应该通过AJAX加载。我找到了她的一个例子——尝试为每个组件添加一个道具,并将值绑定到它。您的道具将是item,绑定将类似于v-for中的
:item=“item”
,并在每个组件中添加
道具:['item']
。或者,更好的解决方案是将
v-for
移动到数据实际所在的子组件,或者将数据向上移动到父组件
Vue。组件注册全局组件。它不需要包含在Vue实例中
 <div id="app">
  <first v-for="item in secondFormDetails" track-by="id"></first>
  <second v-for="item in firstFormDetails" track-by="id"></second>
 </div>

 <template id="template-first">
  <div> {{ item.docNumber }}</div>
 </template>

 <template id="template-second">
  <div> {{ item.docNumber }}</div>
 </template>