Select2 autoform创建一个无限循环,它不是被动的

时间:2017-04-07 10:27:56

标签: javascript meteor select2 meteor-autoform

我有一个表单,其中包含两个表单,我需要在更新第二个表单时以这种方式显示第一个表单中的信息:

1)主要形式:

{{#autoForm collection=company doc=company id='mainForm' type=formType}}
 {{> uploadLogoForm }}
 {{> afQuickField
   name='company.logoUrl'
   class='fu-select-tag--background-image'
   label='Select a logo'
   type='select'
   options=logoOptions
   template='plain'}}
{{/autoform}}

2)第二种形式:

 <template name="uploadLogoForm">
  {{#autoForm collection=collection id="newLogoForm" type="normal" class="fu-form-upload"}}
    {{> afQuickField
     name="_id"
     accept=".png,.gif,.svg"
     label="Upload a logo"
     type="slingshot"
     directive="logos"}}
  {{/autoForm}}
</template>

因此,如果我在uploadLogoForm中上传徽标,则应使用此帮助在主窗体中显示/选择此徽标:

Template.mainForm.helpers({
 logoOptions() {
   const company = getCompany();
   const logoUrls = [];
   let currentLogoUrl;

   if (company) {
    currentLogoUrl = company.company.logoUrl;
   }

   const uploadedLogo = AutoForm.getFieldValue('_id', 'newLogoForm');
   if (uploadedLogo) {
    currentLogoUrl = getPath(uploadedLogo);
   }

   if (currentLogoUrl) {
    logoUrls.push(currentLogoUrl);
   }

   if (FlowRouter.subsReady('logos')) {
     Logo.find({}, {sort: {_id: 1}}).forEach(logo => {
       const logoUrl = getPath(logo._id);

       if (!_.include(logoUrls, logoUrl)) {
         logoUrls.push(logoUrl);
       }
     });
  }

  return logoUrls.map(logoUrl => ({
   label: logoUrl,
   value: logoUrl,
   selected: logoUrl === currentLogoUrl ? true : null
 }));
}});

如果快捷方式的类型是'select',这很好用。但是当我使用'select2'时,许多奇怪的事情发生在帮助器中的无限循环中,而select元素是空的。我必须手动选择元素或文件才能修复它。

1 个答案:

答案 0 :(得分:0)

最后我们可以找到问题。 Select2不关心attr(选中)只有值很重要。