我有两个页面,fila.js
和retirada.js
。
fila.js
包含一个名为atualizarChamadas
的函数,我将其导出到retirada.js
。
当我从fila.js
调用该函数时,它工作正常,但是当我在retirada.js
中调用它时,会话对象或被动变量并不会在帮助程序中被动地工作。
fila.js
中的我的功能:
export default function atualizarChamadas() {
let chamadas = Chamadas.find({medico: 1},{sort: {data_inicio: -1}}).fetch();
//Session.set("chamadas", chamadas);
ChamadasReactive.set(chamadas);
}
我的模板助手
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);
}
});
在fila.js
我调用该函数,它运行正常:
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
的代码,但它不能被动地运行:
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();
}
}
});
当调用console.log
时,我可以看到chamadas的对象结果的长度增加,但我的模板不会刷新新数据。我使用的方法来更改文档,但我在视图上更改了它,但仍然无效。
我需要一些帮助。
答案 0 :(得分:0)
我认为问题来自于在事件处理程序中使用Meteor调用。以下是一些允许反应式方法调用的替代包:meteor-reactive-method和mnmtanish:call。
答案 1 :(得分:0)
我修复了这个代码块的问题,我在helper return中直接使用了集合,每当我的集合发生变化时,反应性都会再次发生。
Template.fila.helpers({
chamadasAtendimento: function() {
//return Session.get("chamadas");
return Chamadas.find({medico: 1},{sort: {data_inicio: -1}}).fetch().filter((el)=>{
return el.status == 'A';
}).slice(0,11);
}
});
Template.fila.helpers({
chamadasEspera: function() {
return Chamadas.find({medico: 1},{sort: {data_inicio: -1}}).fetch().filter((el)=>{
return el.status == 'E';
}).slice(0, 11);
}
});
Template.fila.helpers({
chamadasFinalizada: function() {
return Chamadas.find({medico: 1},{sort: {data_inicio: -1}}).fetch().filter((el)=>{
return el.status == 'F';
}).slice(0, 11);
}
});