我通过使用模板的更改事件来插入一些数据有两个问题:
newElementId
不能立即使用。正确?所以想我确实需要一种回调。这将取决于第一个问题的答案:如果我必须将insert()
放在服务器端,我必须将新ID发送到Route.go
的客户端事件
Template.createElement.events({
'change input': function(event, template) {
var collection = event.target.value,
route = event.target.dataset.route
title = 'Title';
newElementId = window[collection].insert({ title: title }, function(error) { if(error) console.warn(error); });
Router.go(route, { _id : newElementId });
}
});
答案 0 :(得分:1)
您可以插入或使用Method.Call
服务器端,两者都可以控制安全性。
如果你去插入路线,那么该项目将立即在你的收藏中,它将与服务器同步(服务器可以拒绝它,然后它也将从客户端删除)
如果你去Method.call,它将首先插入服务器,然后同步回客户端。所以它可能会比第一种方法晚一点出现。我倾向于发现这种方法是一种更健壮的方法来控制安全性和进行部分更新。
您不需要任何回调,所有内容都应该被动地更新。