我在Backbone js中理解模型同步时遇到了一些麻烦。当我实例化并保存新模型时,它的数据将被发送到后端以进行持久化。但是,它的唯一标识符也在后端生成(自动递增整数)。在服务器确认成功后,我需要在模型上立即使用此ID属性。我该怎么做呢?
只是为了提供更多细节,我就像这样创建我的模型:
this.collection.create(modelData, {wait: true}
我希望新创建的模型具有ID属性,其值在后端生成。
答案 0 :(得分:1)
在这种情况下阅读文档很差。结果是主干同步需要来自服务器的JSON响应,指示您希望在模型上设置的额外/更改的属性,这正是我正在寻找的。 p>
答案 1 :(得分:0)
您必须将生成的模型的ID传递回响应中的主干。因此,在您的控制器中,您可以执行以下操作:
def create = Action { implicit request =>
employeeForm.bindFromRequest.fold(
errors => BadRequest,
employee => {
Ok(Employee.create(employee).toString())
})
}
然后定义模型的create方法,如:
def create(employee: Employee): Long = {
DB.withConnection { implicit connection =>
SQL("insert into employee(first_name, last_name) values ({fname}, {lname})").on(
'fname -> employee.fname,
'lname -> employee.lname
).executeInsert()
} match {
case Some(long) => long
case None => 0
}
}
在视图中的backbone.js中定义create的成功回调,如下所示:
app.employeeList.create(@model,
wait: true
success: _.bind((model, response)->
@model.set("id", response)
您还可以为返回的ID为0添加某种错误处理。此外,不确定您的后端使用的是什么,但此代码适用于Play 2 / Scala。 (对于CoffeeScript,如果你需要JS,请告诉我)