2017-08-29 58 views
0

我想要一个被动引导selectpicker,但我有一个奇怪的行为: 事件必须改变选择的选项,但它只适用于第一个事件,因为应用程序不工作不进入onRendered部分...流星onRendered不叫

这是onRendered部分:

var renderTimeout = false; 
Template.printerselect.onRendered(function(){ 
    if (renderTimeout !== false) { 
    Meteor.clearTimeout(renderTimeout); 
    } 
    renderTimeout = Meteor.setTimeout(function() { 
    $('#printerName').selectpicker("refresh"); 
    renderTimeout = false; 
    }, 10); 
}); 

Template.printerSetupForm.onRendered(function(){ 
    $('.selectpicker').selectpicker(); 
}); 

这里,模板:

<div class="col-lg-3 col-md-4 col-xs-12 form-group"> 
    <label>COMPANY</label> 
    <select id="printerCompany" class="form-control selectpicker" name="printer[company]"> 
    <option selected="true" disabled="disabled" value={{company}}> 
     Please Select A Printer Company 
    </option> 
    {{#each Companies}} 
     <option value="{{company}}" {{printerCompanySelected company}}> {{company}}</option> 
    {{/each}} 
    </select> 
</div> 
<div class="col-lg-3 col-md-4 col-xs-12 form-group"> 
    <label>PRINTER NAME</label> 
    <select id="printerName" class="form-control selectpicker" name="printer[name]"> 
    <option selected="true" disabled="disabled" value={{name}}> 
     Please Select A Printer 
    </option> 
    {{#each Names}} 
     <!--<option value="{{name}}" {{printerNameSelected name}}> 
     {{name}} 
     </option>--> 
     {{>printerselect}} 
    {{/each}} 
    </select> 
</div> 

<template name="printerselect"> 
    <option value="{{name}}"> {{name}} </option> 
</template> 

的刷新在页面呈现时调用。

然后,我更改了公司,它改变了一些会话变量,并且反应性地改变了名称选择选项,但没有调用刷新,因此没有进入放弃的部分。

但是当我再次更换它的公司时,onRendered部分被调用。

奇怪的是,即使这没有显示正确的名称,当我选择一个与公司不匹配的名称时,select会选择正确的名称。

对不起我的英语,我尽力了。

非常感谢您!

编辑:名助手:

Names:() => { 
    company=Session.get('printer').company; 
    if(typeof company!='undefined') { 
    return Printers.find({company: company}).fetch(); 
    } else { 
    return Printers.find().fetch(); 
    } 
} 
+0

什么是“名称”助手? – user3374348

+0

@ user3374348我编辑了我的帖子。我使用会话变量,所以它应该刷新被动 – FlorianD

+0

按我的理解,这应该工作。 '.fetch()'es不是必需的。如果您从使用较少打印机的公司切换到使用较多打印机的公司,它是否有效? – user3374348

回答

0

我设置会话变量 '打印机' 和空场。当我选择一家公司时,它现在正在运转,但没有公司,我没有得到任何打印机,因为我不需要用'未定义'测试公司,但空场地。

所以我改变了与空场测试和它不工作了...

太奇怪了,一个测试可能取消onRendered,这必须与蒙戈的东西的问题。

我会继续搜索它。