我正在使用jquery multiSelect插件(http://harvesthq.github.io/chosen/)和meteor。它工作正常。当选项列表动态更改时,它会在选项列表中显示旧的相同值。
<template name="testDynamicSelect">
<select class="chosen-select">
{{#each selectList}}
<option style="width: 300px">{{this}}</option>
{{/each}}
</select>
</template>
助手
Session.set('selectList',['delhi','pune','chandigarh']);
Session.set('run',true);
Template.testDynamicSelect.helpers({
selectList:function(){
return Session.get('selectList')
}
});
Template.testDynamicSelect.rendered = function(){
var instance = this;
instance.autorun(function(){
if(Session.get('run')){
var config = {
'.chosen-select': {},
'.chosen-select-deselect' : {allow_single_deselect:true},
'.chosen-select-no-single' : {disable_search_threshold:10},
'.chosen-select-no-results': {no_results_text:'Oops, nothing found!'},
'.chosen-select-width' : {width:"95%"}
}
for (var selector in config) {
$(selector).chosen(config[selector]);
}
Session.set('run',false);
console.log('run select ');
}
});
}
现在在控制台中,当我输入
时Session.set('selectList',['delhi','pune','chandigarh','bangalore']);
Session.set('run',true);
我没有获得更新的值'bangalore'。
答案 0 :(得分:1)
您的.rendered()
仅在呈现模板时运行一次,在重新呈现模板之前,它不会对run
会话变量中的更改做出反应。
您需要更新模板助手中的菜单,以使其对地名数组中的更改做出反应。
答案 1 :(得分:0)
如果检查正确,则动态生成选项标签。但它没有在jquery multi select中动态显示。原因是,即使动态生成选项标签,您也没有更新多选列表。
仔细阅读文档,您需要按如下方式触发更新: $( “选择选。 ”)触发器(“ 选自:更新”);