Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 流星动态下拉列表不';行不通_Javascript_Meteor_Semantic Ui - Fatal编程技术网

Javascript 流星动态下拉列表不';行不通

Javascript 流星动态下拉列表不';行不通,javascript,meteor,semantic-ui,Javascript,Meteor,Semantic Ui,我正在使用语义用户界面。 现在我的下拉列表有问题 下拉列表将动态填充来自minimongo的值 当我在myTemplate.rendered中执行$('.menu').dropdown()时,它会认为下拉列表为空且不起作用,但当我将其放入dropdowntListItems.rendered中时,它会被调用N次。N是项目的计数() 这个解决方案有效。 有更好的解决办法吗 //myTemplate <div class="menu"> {{#each dropdowntList

我正在使用语义用户界面。 现在我的下拉列表有问题

下拉列表将动态填充来自minimongo的值

当我在myTemplate.rendered中执行$('.menu').dropdown()时,它会认为下拉列表为空且不起作用,但当我将其放入dropdowntListItems.rendered中时,它会被调用N次。N是项目的计数()

这个解决方案有效。 有更好的解决办法吗

//myTemplate
<div class="menu">
    {{#each dropdowntList}} 
        {{> dropdowntListItems}}
    {{/each}}
 </div>

 <template name="dropdowntListItems">
     <div class="item">{{item}}</div>
 </template>

你所做的是一个很好的解决方案。自从大火被释放后

Template.myTemplate.rendered
中,下拉列表为空,因为呈现回调在
Template.myTemplate.dropdownList
中的
Items().fetch()
完全运行之前触发。此外,添加新项目时,另一个问题是下拉列表不会更新

Avital是MDG的一部分,曾致力于开发新的Blaze引擎,研究如何实现与旧渲染回调(Blaze之前)相同的行为

1:


{{#每个下拉列表}
{{item}}
{{/每个}}
Template.myTemplate.item=函数(){
$('.menu').dropdown();
};
2:。(你做了什么)


{{#每个下拉列表}
{{>dropdowntListItems}
{{/每个}}
{{item}}
Template.dropdowntListItems.rendered=函数(){
$('.menu').dropdown();//被调用N次
}; 

您所做的是一个很好的解决方案。自从大火被释放后

Template.myTemplate.rendered
中,下拉列表为空,因为呈现回调在
Template.myTemplate.dropdownList
中的
Items().fetch()
完全运行之前触发。此外,添加新项目时,另一个问题是下拉列表不会更新

Avital是MDG的一部分,曾致力于开发新的Blaze引擎,研究如何实现与旧渲染回调(Blaze之前)相同的行为

1:


{{#每个下拉列表}
{{item}}
{{/每个}}
Template.myTemplate.item=函数(){
$('.menu').dropdown();
};
2:。(你做了什么)


{{#每个下拉列表}
{{>dropdowntListItems}
{{/每个}}
{{item}}
Template.dropdowntListItems.rendered=函数(){
$('.menu').dropdown();//被调用N次
}; 

我花了很长时间才明白这一点——可能是因为我不知怎么地对模板名称感到困惑,但以下是我如何创建供应商名称下拉列表,使用Meteor.js和语义Ui从MongoDB集合填充:

首先,为下拉列表及其包含的项目创建模板:

<template name="vendorNames">
  <div class="ui selection dropdown">
    <input type="hidden" name="vendor">
    <div class="default text">Vendor</div>
    <i class="dropdown icon"></i>
    <div class="menu">
      {{# each vendorNames}}
        {{> vendorName}}
      {{/each}}
    </div>
  </div>
</template>

<template name="vendorName">
  <div class="item" name="vendor">{{name}}</div>
</template>

这与第一个答案没有显著的不同,但我无法得到适合我的答案。一般来说,我对Meteor和编程都很陌生,所以我可能只是错过了一些简单的东西。不管怎样,这个解决方案对我来说都很有效。

这花了我一辈子的时间——可能是因为我不知何故对模板名称感到困惑,但下面是我如何创建一个供应商名称下拉列表,使用Meteor.js和语义Ui从MongoDB集合填充:

首先,为下拉列表及其包含的项目创建模板:

<template name="vendorNames">
  <div class="ui selection dropdown">
    <input type="hidden" name="vendor">
    <div class="default text">Vendor</div>
    <i class="dropdown icon"></i>
    <div class="menu">
      {{# each vendorNames}}
        {{> vendorName}}
      {{/each}}
    </div>
  </div>
</template>

<template name="vendorName">
  <div class="item" name="vendor">{{name}}</div>
</template>
这与第一个答案没有显著的不同,但我无法得到适合我的答案。一般来说,我对Meteor和编程都很陌生,所以我可能只是错过了一些简单的东西。无论哪种方式,这个解决方案对我都有效。

应该是Items().find()而不是Items().find()吗
<template name="vendorNames">
  <div class="ui selection dropdown">
    <input type="hidden" name="vendor">
    <div class="default text">Vendor</div>
    <i class="dropdown icon"></i>
    <div class="menu">
      {{# each vendorNames}}
        {{> vendorName}}
      {{/each}}
    </div>
  </div>
</template>

<template name="vendorName">
  <div class="item" name="vendor">{{name}}</div>
</template>
// Activate semantic-ui jQuery for drop down
Template.vendorNames.rendered = function() {
  $('.ui.selection.dropdown')
    .dropdown('restore default text')
    ;
}
// Add the template helper to get the Vendors list
Template.vendorNames.helpers({
  vendorNames: function() {
    return Vendors.find();
  }
});