작은 게임을 만들고 하나의 플레이어가 작업을 기다리고있을 때 상대방의 이름을 표시하고 싶습니다. 상대방 이름을 표시하기 위해 다음과 같은 기능이 있습니다. 내 템플릿에서템플릿 도우미에서 함수의 재실행을 강제 실행하는 방법
Template.Details.helpers({
opponentName: function() {
var opponentId = _.without(this.players, Meteor.userId)[0];
var oppDoc = Meteor.users.findOne({_id: opponentId});
return oppDoc;
})
는
<template name='opponent'>
<h3> {{opponentName.username}} </h3>
</template>
이 처음으로 올바른 사용자 이름을 반환합니다. 그러나 그 후에는 사용자 이름이 변경되지 않습니다. 나는 이것이 내 var 상대이기 때문에라고 생각한다. Id는 변하지 않을 것이다.
나는이 반응을 일으키는 방법을 생각하고 있었다. 따라서 reactieve 데이터 소스 (Meteor.userId)가 opponentId로 함수를 변경하면 다시 실행되어 새로운 userId를 반환합니다.
이 작업을 수행하는 올바른 방법은 무엇이며 템플릿 도우미에서 여전히 수행합니까?
편집 :
Template.Details.helpers({
opponentName: function() {
var id = Games.findOne({_id: this._id}, {isCreating: 1})
var opponentId = _.without(this.players, id)[0];
var oppDoc = Meteor.users.findOne({_id: opponentId});
return oppDoc;
})
내 생각은 isCreating이 ID를 업데이트하기 때문에하는 것은 반응성,이었다, 따라서 모든 업데이트됩니다 :
은 또한 다음과 같은 시도했다. 하지만이 방법도 효과가 없습니다.
고마워요 :) 다시 한 번 그 해결책이 너무 간단하다는 것에 놀랐습니다. Meteor.userId()는 내가 필요한 전부였습니다. – swennemen