带有meteor的Jquery多选插件

时间:2015-06-10 05:06:52

标签: javascript jquery meteor jquery-chosen

我正在使用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'。

2 个答案:

答案 0 :(得分:1)

您的.rendered()仅在呈现模板时运行一次,在重新呈现模板之前,它不会对run会话变量中的更改做出反应。

您需要更新模板助手中的菜单,以使其对地名数组中的更改做出反应。

答案 1 :(得分:0)

如果检查正确,则动态生成选项标签。但它没有在jquery multi select中动态显示。原因是,即使动态生成选项标签,您也没有更新多选列表。

仔细阅读文档,您需要按如下方式触发更新: $( “选择选。 ”)触发器(“ 选自:更新”);