Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Backbone.js模型-与服务器同步ID_Backbone.js - Fatal编程技术网

Backbone.js模型-与服务器同步ID

Backbone.js模型-与服务器同步ID,backbone.js,Backbone.js,我在理解主干js中的模型同步时遇到了一些问题。当我实例化并保存一个新模型时,它的数据被发送到后端进行持久化。但是,它的唯一标识符也在后端生成(一个自动递增的整数)。我需要在服务器确认成功后立即在模型上使用此ID属性。我该怎么做呢 为了更详细一点,我创建了如下模型: this.collection.create(modelData, {wait: true} 我希望新创建的模型有一个ID属性,其值是在后端生成的。您必须在响应中将生成的模型的ID传递回主干网。因此,在控制器中,您可以执行以下操作:

我在理解主干js中的模型同步时遇到了一些问题。当我实例化并保存一个新模型时,它的数据被发送到后端进行持久化。但是,它的唯一标识符也在后端生成(一个自动递增的整数)。我需要在服务器确认成功后立即在模型上使用此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。