我已经为此寻找了很多年,并且看过很多类似的帖子和答案,但没有什么是我正在追求的。我可能以错误的方式接近这个。
我正在尝试将新模型添加到集合中,但我想进行服务器端验证。如果服务器验证失败,我不希望在(集合)视图中添加新模型。
NB。情况是当我得到200个成功的响应代码(我的后端是cakephp,并且cakephp接收请求并且处理正常),但服务器验证意味着没有保存到数据库(即,我不想添加到数据库,因为它会创建一个不需要的副本)。
这是我的骨干代码:
//
// Add the selected school as a school the user manages.
addTeacherSchool: function(view) {
attribs = view.model.attributes;
attribs.school_id = attribs.id;
delete attribs.id;
attribs.user_id = this.model.id;
this.teacherSchoolListView.collection.create(
attribs, {wait: true, success: this.addTeacherSchoolSuccess}
);
},
addTeacherSchoolSuccess: function(model, resp, options) {
// resp is false
},
在我的骨干中,SchoolListView(this.teacherSchoolListView是SchoolListView的一个实例)我有代码(初始化:):
this.listenTo(this.collection, 'add', this.render);
在服务器端(cakephp),如果我已经拥有该模型的“副本”,则返回false:
return new CakeResponse(array('body' => json_encode($error_count == 0)));
正如你所看到的,我在我的collection.create()调用中使用wait:true。在将“项目”添加到视图之前,正在执行的操作是等待响应从服务器返回。但是如果服务器端验证返回错误,我不希望添加该项。
此外,调用addTeacherSchoolSuccess()(应该发生这种情况,因为req。/ resp。周期中没有错误,只是在服务器端验证。
关于如何实现我的目标的任何想法?
NB。我可以(并且实际上 - 虽然我已经删除它以便我的代码片段更简单)做验证客户端,但我也希望我的服务器端验证能够运行。