にログインするときに失敗するようだ:流星反応性は、私は次のようになり、私の流星アプリで効用関数のカップルを持っている
Template.registerHelper('canManagePatients',() =>{
const id = Meteor.userId();
const aa = new AccountAccess(id);
const val = aa.canManagePatients();
return val;
});
私の理解では、Meteor.userIdは()ので、recativeデータソースであるとということですログイン後、これらのヘルパーの状態が変わるはずです。
残念ながら、このように動作しません。リロードしない限り、これらのオプションはログイン後に非表示になります。何が欠けていますか?
これはAccountAccessクラスははuserIdを使用する方法である:
constructor(userId){
if (typeof userId !== "undefined"){
this._userId = userId;
} else {
this._userId = Meteor.userId();
}
}
canManagePatients(){
const practice = this.getCurrentPractice();
if (!practice){
return false;
}
const patientTagId = this._getPatientAdminTag()._id;
const ownerTagId = this._getOwnerTag()._id;
return practice.tags.some((obj)=>{
return (obj === patientTagId || obj === ownerTagId);
});
}
更新
これは、テンプレートがどのように見えるかの抜粋です。すべてはログイン後にリロード後、正しく機能4つの{{#if }}
文を除いて正常に動作します
<div id="navbar" class="navbar-collapse collapse">
{{#if Template.subscriptionsReady}}
<ul class="nav navbar-nav navbar-right">
{{#if currentUser}}
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
{{practice.name}}<br><b>Hello {{userName}}</b> (Not you? <b><u>Logout</u></b>)<span class="caret"></span>
</a>
<ul class="dropdown-menu">
{{#if canManageUsers}}<li><a href="/manage-practice/users/">Manage Users</a></li>{{/if}}
{{#if canManageForms}}<li><a href="/manage-practice/registration/">Manage Registration Settings</a></li>{{/if}}
{{#if canManageForms}}<li><a href="/manage-practice/forms/">Manage Forms</a></li>{{/if}}
{{#if canManagePatients}}<li><a href="/manage-practice/reports/">Reporting</a></li>{{/if}}
<li role="separator" class="divider"></li>
<li><a href="/widgets">Use compact UI</a></li>
<li><a href="/dashboard">Use old UI</a></li>
<li role="separator" class="divider"></li>
<li><a id="linkLogout">Logout</a></li>
</ul>
</li>
{{/if}}
</ul>
{{/if}}
</div><!--/.nav-collapse -->
テンプレートの外観は? – MasterAM
ブートストラップのドロップダウン内には次のような行があります。{{{#if canManagePatients}}
そのドロップダウンをjavascriptで初期化する必要はありませんか? –