2017-08-29 84 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,這必須與蒙戈的東西的問題。

我會繼續搜索它。