javascript - meteor 动态下拉菜单不起作用

标签 javascript meteor semantic-ui

我正在使用 Semantic-Ui。 现在我的下拉菜单有问题。

下拉列表会使用 minimongo 中的值动态填充。

当我在 myTemplate.rendered 中执行 $('.menu').dropdown() 时,它认为 Dropdown 是空的并且不起作用,但是当我将其放入 dropdowntListItems.rendered 时,它被调用了 N 次。 N 是项目的 count()。

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

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

 <template name="dropdowntListItems">
     <div class="item">{{item}}</div>
 </template>
Template.myTemplate.dropdowntList = function (){
    return Items().fetch();
};

Template.dropdowntListItems.rendered = function(){
    $('.menu').dropdown(); //gets called N times
}; 

最佳答案

这让我花了很长时间才明白 - 可能是因为不知何故我对模板名称感到困惑,但这是我创建 vendor 名称下拉列表的方式,使用 Meteor.js 和 Semantic-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>

然后,确保下拉列表的 jQuery 正常工作,并在 vendor_names.js

中获取 vendor 列表
// 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();
  }
});

它与第一个答案并没有太大的不同,但我无法让那个答案为我工作。我对 Meteor 和一般编程还很陌生,所以我可能只是遗漏了一些简单的东西。无论哪种方式,这个解决方案都对我有用。

关于javascript - meteor 动态下拉菜单不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23232918/

相关文章:

reactjs - 删除项目时保持语义 react 多选下拉列表打开

javascript - 如何使用 Semantic UI 和 JQuery 在特定卡片上进行调光,而不是在我的所有卡片库上进行切换

javascript - 如果元素被 css 隐藏,则 MouseEvent 被吞下

javascript - material-ui 用 useStyles/jss 覆盖主题

javascript - 如何创建 flex 的 css 内容分隔符?

arrays - 本地数组更改时如何重新渲染 meteor blaze 模板?

javascript - meteor ;发布后不立即对客户端进行排序

javascript - toSVG 方法不适用于 Fabric.js 的扩展类

javascript - 在服务器上调用 Collection.insert 时为 "Meteor code must always run within a Fiber"

twitter-bootstrap - 在基于 Bootstrap 的项目中使用语义 UI 元素