私は2ページ、fila.js
とretirada.js
を持っています。流星セッションオブジェクトが反応しない
fila.js
にはatualizarChamadas
というファンクションがあり、retirada.js
にエクスポートします。
fila.js
から関数を呼び出すと、正常に動作しますが、retirada.js
で呼び出すと、セッションオブジェクトまたはreactive-varはヘルパーで反応的に機能しません。 fila.js
である
My機能:
export default function atualizarChamadas() {
let chamadas = Chamadas.find({medico: 1},{sort: {data_inicio: -1}}).fetch();
//Session.set("chamadas", chamadas);
ChamadasReactive.set(chamadas);
}
マイテンプレートヘルパーfila.js
で
Template.fila.helpers({
chamadasAtendimento: function() {
//return Session.get("chamadas");
return ChamadasReactive.get().filter((el)=>{
return el.status == 'A';
}).slice(0,11);
}
});
Template.fila.helpers({
chamadasEspera: function() {
//return Session.get("chamadas");
return ChamadasReactive.get().filter((el)=>{
return el.status == 'E';
}).slice(0, 11);
}
});
Template.fila.helpers({
chamadasFinalizada: function() {
return ChamadasReactive.get().filter((el)=>{
return el.status == 'F';
}).slice(0, 11);
}
});
私は関数を呼び出すと、それが正常に動作します:私はこの炎を持っている
Template.fila.events({
"submit form": function (e, template){
e.preventDefault();
atualizarChamadas();
}
});
関数が呼び出されたときにうまく動作するテンプレートfila.js
:
<tbody>
{{#each chamada in chamadasEspera}}
<tr class="success">
<td>{{chamada.senha}}</td>
<td>{{chamada.data_inicio}}</td>
<td></td>
<td>
<select id="{{chamada._id}}" class="form-control">
<option value="E">Esperando</option>
<option value="A">Atendimento</option>
<option value="F">Finalizado</option>
</select>
</td>
<td><button id="{{chamada._id}}" value="{{chamada.senha}}" name="{{chamada.status}}" class="btn btn-block">Chamar</button></td>
</tr>
{{/each}}
</tbody>
<br/>
<tbody>
{{#each chamada in chamadasAtendimento}}
<tr class="danger">
<td>{{chamada.senha}}</td>
<td>{{chamada.data_inicio}}</td>
<td></td>
<td>
<select id="{{chamada._id}}" class="form-control">
<option value="A">Atendimento</option>
<option value="E">Esperando</option>
<option value="F">Finalizado</option>
</select>
</td>
<td><button id="{{chamada._id}}" value="{{chamada.senha}}" name="{{chamada.status}}" class="btn btn-block">Chamar</button></td>
</tr>
{{/each}}
</tbody>
<br/>
<tbody>
{{#each chamada in chamadasFinalizada}}
<tr class="info">
<td>{{chamada.senha}}</td>
<td>{{chamada.data_inicio}}</td>
<td>{{chamada.data_fim}}</td>
<td>
<select id="{{chamada._id}}" class="form-control">
<option value="F">Finalizada</option>
<option value="E">Esperando</option>
<option value="A">Atendimento</option>
</select>
</td>
<td></td>
</tr>
{{/each}}
</tbody>
</table>
{{/if}}
私のページretirada.js
では、私はatualizarChamadas
を呼び出して、このコードを持っているが、それは反応的に動作しません:console.log
が呼び出されると
Template.retirada.events({
"click button": function(e,template){
let newPass = e.target.id,
id = Retirada.find({}).fetch()[0]._id;
console.log('01:' + Chamadas.find({medico: 1},{sort: {data_inicio: -1}}).fetch().length);
Retirada.update(id, {count: newPass});
Chamadas.insert(
{senha: newPass, status : 'E', data_inicio: new Date(), medico: 1});
console.log('02:' + Chamadas.find({medico: 1},{sort: {data_inicio: -1}}).fetch().length);
setTimeout (teste, 1000);
function teste(){
atualizarChamadas();
}
}
});
が、私はのオブジェクト結果の長さを見ることができます私のテンプレートは新しいデータをリフレッシュしません。私は文書を変更するためのメソッドを使用しましたが、ビューで行うために変更しましたが、まだ動作しません。
私は助けが必要です。
私が呼び出すために使用方法を停止し、今私は、ビュー上で直接Mongoのドキュメントを変更するが、それはまだ私は、一般的に流星の呼び出しでjQueryを使って直接ビューを変更することにより、これらの問題を回避得ている –
動作しません。私は私の答えを更新します。 – mutdmour
ちょうどあなたがコードを変更したことに気づいた。 Iron Routerを使用していますか?カーソル(Chamadas.find()をルートのデータの一部として返すことができます)。これはかなり確実に機能します。フィルタが必要な場合、Session変数はIron Routerのデータコンテキスト内で動作します。あなたがこれを行う方法の詳細が必要な場合は私に教えてください。セキュリティ上の理由から、Meteorコールはサーバー側で使用し、クライアント側から挿入/更新/削除操作をブロックする必要があります。 – mutdmour