からのデータIは、コードのIM流星テンプレート・マネージャのような部分を有する:。アクセス流星Template.instance()メソッドの呼び出しコールバック
"click #refuse": function() {
Meteor.call("removeUserFromEvent", this._id, Meteor.userId());
if (Template.instance().data.participants.length === Template.instance().data.orderedParticipants.length) {
Meteor.call("updateEventStatus", this._id, "ordered");
}
Router.go("/");
}
私はたいはif(...){...}
ものがで実行されることを確認しますMeteor.call(...)
"click #refuse": function() {
Meteor.call("removeUserFromEvent", this._id, Meteor.userId(), function(){
if (Template.instance().data.participants.length === Template.instance().data.orderedParticipants.length) {
Meteor.call("updateEventStatus", this._id, "ordered");
}
});
Router.go("/");
}
のようなコールバック、しかし、私はこれを行うにしようとした場合には、そのコールバックの内側にTemplate.instance()
はを返すことが判明、テンプレートからデータを取得できません。
メソッドコールバックでこのようなものを入れてもいいですか(つまり、いくつかの現在の状態パラメータを取得し、それらの呼び出しに応じて、別のメソッドを呼び出しません)。たぶん、Template.instance()。データが状態パラメータを格納するための間違った場所ですか? Template.instance.dataは全く反応しますか?多分、私はこのような機能がコールバックに存在することを可能にするためにアーキテクチャを何とか変更するべきでしょうか?
"click #refuse": function(evt,tmp) {
// get and cache your template data context references;
var participants = tmp.data.participants;
var orderedParticipants = tmp.data.orderedParticipants;
// this._id is not reliable, you should use Blaze.getData() on the event target
var _id = Blaze.getData(event.currentTarget)._id;
var userId = Meteor.userId();
// make sure your callback function accepts error and result
Meteor.call("removeUserFromEvent", _id, userId, function(err,res) {
if (err) {/* handle error */}
if (res) {
if (participants.length === orderedParticipants.length) {
Meteor.call("updateEventStatus", _id, "ordered", function(err,res) {
if (err) {/* handle error */}
if (res) {
// perhaps you would like to redirect to home after successful operation only
Router.go("/");
}
});
}
}
});
}
PS:あなたがしたいことがありので、あまりにも多くのコールバックは、ここにありますので、あなたのコードのように改訂することができ'event target': function(event, template) {}
のようにイベントハンドラとイベントハンドラ関数は、パラメータとしてイベントやテンプレートを受け入れるだ