0
イベントハンドラ内にネストされた関数があります。外部関数は、Treesコレクションからドキュメントのコピーを作成します。その後、内部関数は、元のツリー文書のtreeBranches
フィールドに配列に含まれるIDを持つBranchesコレクションの文書のコピーを作成します。外部関数から内部関数に返されたIDを渡す
外部関数から内部関数にnewTreeId
を渡す必要があるため、新しい分岐IDを新しい文書の配列に追加できます。内部関数のconsole.log(newTreeID)
は、現在、undefinedを返しています。
Template.Actions.events({
'change .action-selection': function(e) {
e.preventDefault();
var selection = $(e.target).val();
var currentTreeId = this._id;
var branches = Branches.find({_id:{$in:this.treeBranches}});
switch(selection) {
case "repeat":
return Meteor.call('treeRepeat', currentTreeId, function (newTreeId) {
branches.forEach(function(b) {
var currentBranchId = b._id;
console.log(newTreeId);
Meteor.call('treeBranchesRepeat', currentBranchId, newTreeId, function() {
});
});
});
break;
...
Meteor.methods({
treeRepeat: function(currentTreeId) {
check(currentTreeId, String);
var tree = Trees.findOne({_id:currentTreeId}, {fields:{_id:0, treeBranches:0}});
var newTreeId = Trees.insert(tree);
return {
_id: newTreeId
};
},
treeBranchesRepeat: function(currentBranchId, newTreeId) {
check(currentBranchId, String);
check(newTreeId, String);
var branch = Branches.findOne({_id:currentBranchId}, {fields: {_id: 0}});
var newBranchId = Branches.insert(branch);
Trees.update({_id:newTreeId},{$push:{treeBranches:newBranchId}});
return {
_id: newBranchId
};
}
});
Bjorn、ありがとう!これは素晴らしいです。私の経験がないと、しばしば私は事を複雑にする。 – Bren
流星とあなたの旅で幸運:) –