Backbone.js模型-与服务器同步ID
我在理解主干js中的模型同步时遇到了一些问题。当我实例化并保存一个新模型时,它的数据被发送到后端进行持久化。但是,它的唯一标识符也在后端生成(一个自动递增的整数)。我需要在服务器确认成功后立即在模型上使用此ID属性。我该怎么做呢 为了更详细一点,我创建了如下模型:Backbone.js模型-与服务器同步ID,backbone.js,Backbone.js,我在理解主干js中的模型同步时遇到了一些问题。当我实例化并保存一个新模型时,它的数据被发送到后端进行持久化。但是,它的唯一标识符也在后端生成(一个自动递增的整数)。我需要在服务器确认成功后立即在模型上使用此ID属性。我该怎么做呢 为了更详细一点,我创建了如下模型: this.collection.create(modelData, {wait: true} 我希望新创建的模型有一个ID属性,其值是在后端生成的。您必须在响应中将生成的模型的ID传递回主干网。因此,在控制器中,您可以执行以下操作:
this.collection.create(modelData, {wait: true}
我希望新创建的模型有一个ID属性,其值是在后端生成的。您必须在响应中将生成的模型的ID传递回主干网。因此,在控制器中,您可以执行以下操作:
def create = Action { implicit request =>
employeeForm.bindFromRequest.fold(
errors => BadRequest,
employee => {
Ok(Employee.create(employee).toString())
})
}
然后定义模型的创建方法,如:
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添加某种类型的错误处理。另外,不确定后端使用的是什么,但这段代码是用于Play2/Scala的。(对于CoffeeScript,如果您需要JS,请告诉我)本例中的文档阅读不好。事实证明,主干同步需要来自服务器的JSON响应,指示您希望在模型上设置的额外/更改的属性,这正是我想要的。您正在设置集合的模型属性吗?更多的代码会更好。你有什么问题?主干将为开箱即用的模型分配一个id。