2017-08-29 7 views
0

私は反応的なブートストラップのselectpickerを持っていますが、私は奇妙な振る舞いを持っています: イベントは選択肢のオプションを変更する必要がありますが、流星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一部です... onRendered一部に

を行っておりません。ページがレンダリングされるときに呼び出されます。

次に、いくつかのセッション変数を変更し、名前選択オプションを変更するように会社を変更しますが、リフレッシュは呼び出されないので、オンデリバリーされた部分には来ません。

しかし、私が再び会社を変えると、onRendered部分が呼び出されます。

これは正しい名前を表示していない場合でも、私は会社と一致しない名前を選択している場合、選択が正しいものを選択することです。

私の英語の前に申し訳ありません、私は最善を尽くしました。

ありがとうございます!

EDIT:名前ヘルパー:

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()'は必要ではありません。少ないプリンターの会社からより多くのプリンターの会社に切り替えると機能しますか? – user3374348

答えて

0

私は空のフィールドにセッション変数 'プリンタ' を設定。私が会社を選ぶとき、それは現在働いていますが、会社はなくて、私は「未定義」で会社をテストする必要がないので、プリンタを手に入れません。

だから私は、空のフィールドをテストするために変更され、それはテストがonRenderedを取り消すことができるように奇妙な...もう

が動作していない、これはモンゴのもので問題なければなりません。

私はそれを続けて検索します。

関連する問題