我的路线中有这个:
Router.map(function() {
...
this.route('studentEdit', {
path: '/student/:_id/edit',
data: function() {
return Students.findOne(this.params._id);
},
});
this.route('studentDetail', {
path: '/student/:_id',
data: function() {
return Students.findOne(this.params._id);
}
});
...
});
我在我的模板中使用autoform:
{{#autoForm collection="Students" id="studentEdit" doc=this type="update"}}
{{> afQuickField name='name'}}
{{> afQuickField name='phone'}}
{{> afQuickField name='address' rows=6}}
{{> afQuickField name='remarks' rows=6}}
<button type="submit" class="btn waves-effect waves-light"><i class="material-icons">save</i></button>
{{/autoForm}}
使用预填充字段加载编辑页面。当我保存时,它会保存,但它不会重定向到详细信息页面,并在控制台中返回此错误:
Exception in delivering result of invoking '/students/update': Error: Missing required parameters on path "/student/:_id". The missing params are: ["_id"]. The params object passed in was: {}.
更新 现在可以使用路由到详细信息页面,但控制台中仍然存在错误。我肯定错过了什么。这就是我为使其暂时工作所做的工作:
var moveOnRouter = {
onSuccess: function(formType, result) {
Router.go('studentDetail', {_id: this.docId});
}
}
AutoForm.addHooks('studentEdit', moveOnRouter);
答案 0 :(得分:2)
您需要在表单提交时明确go
到其他路线。但由于您的按钮是submit
,因此您还需要阻止默认的提交操作。
使用模板活动,您可以执行以下操作:
Template.myTemplate.events({
'submit .btn'(ev) {
ev.preventDefault();
router.go('studentDetail',{ _id: this.docId });
}
});
但是,既然您要自动挂钩,也许只需从按钮定义中移除type="submit"
就可以了。