使用Vue

时间:2018-07-24 11:44:07

标签: vue.js

我有一个递归组件,它将通过JSON模式创建表单。 我想使用插槽,因此我可以从外部进行一些更改,在生成表单时,我会从vue收到此错误:

vue.runtime.esm.js:588 [Vue warn]: Duplicate presence of slot
"ref-field" found in the same render tree - this will likely cause render errors.

这是表单生成器的一些主要入口点:

<component-stepper
  :initData="stepperData"
>
  <template slot="non-required-step-field-ref">
    <div>HA!</div>
  </template>
</component-stepper>

这是表单生成器上要引用该插槽的一点:

<component
  v-for="(structure, _name) in properties"
  :key="_name"
  :is="getComponentRender(structure.type)"
  :field-name="_name"
  v-bind="structure"
  :value="formData[_name]"
  style="margin-bottom: 1.5em;"
  @input="updateForm(_name, $event)"
>
  <template slot="text-field">
    <slot name="text-field"></slot>
  </template>
  <template slot="ref-field-inner">
    <slot name="ref-field"></slot>
  </template>
  <template slot="obj-field">
    <slot name="obj-field"></slot>
  </template>
</component>

,这是插槽应终止的端点之一:

  <v-layout row>
    <v-flex
    :xs10="$slots['ref-field-inner']">
      <v-autocomplete
        :items="items"
        :value="value"
        :label="fieldName"
        :loading="loading"
        :search-input.sync="search"
        cache-items
        hide-details
        hide-no-data
        @input="$emit('input', $event)"
      />
    </v-flex>
    <v-flex
      xs2
      style="vertical-align: bottom;"
      v-if="$slots['ref-field-inner']">
      <slot name="ref-field-inner"></slot>
    </v-flex>
  </v-layout>

该过程完全可以执行我想要的操作,但是正确的方法是什么,这样我就不会收到错误消息?

0 个答案:

没有答案