流星动态下拉列表;不起作用
meteor dynamic dropdown doesn't work
我正在使用语义Ui。现在我对下拉列表有问题。
Dropdown会动态填充minimongo中的值。
当我在myTemplate.rendered中执行$('.menu').dropdown()时,它认为dropdown是空的,它不起作用,但当我将其放入dropdownListItems.rendered时,它被调用了N次。N是项目的计数()。
此解决方案有效。有更好的解决方案吗?
//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
};
我花了很长时间才得到这一点,可能是因为我不知何故对模板名称感到困惑,但以下是我如何使用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
中获得供应商列表
// 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和编程还很陌生,所以我可能只是错过了一些简单的东西。无论哪种方式,这个解决方案对我都有效。
您所做的是一个很好的解决方案。由于Blaze已经发布,所以渲染回调只触发一次。
在Template.myTemplate.rendered
中,下拉列表为空,因为在Template.myTemplate.dropdownList
中的Items().fetch()
完全运行之前触发了呈现的回调。此外,当添加新项目时,另一个问题是下拉列表将不会更新。
Avital是千年发展目标的一部分,并致力于开发新的Blaze引擎,他上传了两个不同的解决方案,说明如何实现与旧的渲染回调(Blaze之前)相同的行为。
1:通过添加新的助手。
<template name="myTemplate">
<div class="menu">
{{#each dropdowntList}}
{{item}}
{{/each}}
</div>
</template>
Template.myTemplate.item = function (){
$('.menu').dropdown();
};
2:通过将#的内容封装在模板中。(你做了什么)
<template name="myTemplate">
<div class="menu">
{{#each dropdowntList}}
{{> dropdowntListItems}}
{{/each}}
</div>
</template>
<template name="dropdowntListItems">
<div class="item">{{item}}</div>
</template>
Template.dropdowntListItems.rendered = function(){
$('.menu').dropdown(); //gets called N times
};
- 剑道UI下拉列表在剑道窗口内不起作用
- 单击辐射网格过滤器时不会打开下拉列表
- 显示基于第一个下拉列表的第二个下拉列表不起作用
- 引导程序的下拉列表不起作用
- 选择2 allowClear不使用动态下拉列表
- 下拉列表的onChange()第二次不起作用
- 来自Jquery的“.on”方法在动态生成的下拉列表后不起作用
- 在JavaScript中更改下拉列表索引后,ASP.Net提交按钮单击事件不起作用
- 具体化下拉列表和侧边导航不起作用
- 当我从下拉列表中选择公司名称时,UpdatePanel 自动发布返回=true 并且自动完成文本框不起作用
- 下拉列表删除类不起作用
- 单击两次图标不会关闭下拉列表
- 使用 $('#id').val() 不会返回下拉列表的选定值
- 剑道数据源示意图.数据不能用于下拉列表
- 水豚Poltergeist在点击后不会切换下拉列表
- jQuery -点击链接时不能显示下拉列表
- 使字段不需要基于下拉列表选择MVC 5
- 不能刷新下拉列表在asp mvc 4与选择0.9.12
- 如何使用语言切换器的
- 列表而不是<选择>下拉列表
- 双击事件在IE浏览器中不起作用的选项列表