Backbone.js 从服务器创建模型

Backbone.js 从服务器创建模型,backbone.js,asynchronous,Backbone.js,Asynchronous,我找到了一个如何更新模型的示例。示例如下所示: var Sidebar = Backbone.Model.extend({ param:'sasha', time:(new Date()).getTime() }); window.sidebar = new Sidebar; sidebar.set("name","sasha"); sidebar.set("time",(new Date()).getTime()) Bac

我找到了一个如何更新模型的示例。示例如下所示:

   var Sidebar = Backbone.Model.extend({
      param:'sasha',
      time:(new Date()).getTime()
    });

    window.sidebar = new Sidebar;
    sidebar.set("name","sasha");
    sidebar.set("time",(new Date()).getTime())
    Backbone.sync("update",sidebar,{
      url:'1.php',
      success:function(data){
        debugger
        console.log('success');
        sidebar.set('rand',data.b)
      },
      error:function(){
        console.log('error')
      }
    })
1.php

$time =  rand();
$arr = array('a' => 1, 'b' => $time);

echo json_encode($arr);  
我找不到查询“create”的示例。 是否帮助从服务器创建新一代模型


我读到一个描述这个过程的属性是一个属性“id”。。。我想看看。

您并没有真正按照设计使用主干:p

首先要认识到的是,当您执行
Model.extend
时,您正在为模型创建
构造函数
/prototype/blueprint,而不是实际的
实例
新模型

它包含对模型的所有实例都是元的方法和属性。“元”属性的一个例子是:

  • url
    :您将点击以对其执行操作的url
  • parse
    :用于“展开”响应的函数(例如:如果它具有外部“数据”包装器)
这些属性都不是模型的实际属性。它们只是对它们执行操作的元

一旦有了构造函数,就可以使用
new
创建新的模型

var Sidebar = Backbone.Model.extend({
  url:'1.php'
});

var sidebar = new Sidebar({
    param:'sasha',
    time:(new Date()).getTime()
});
主干网的
更新
创建
之间的区别在于ID元素(主键)的存在。这是您在数据库中识别它的方式。您可以使用
.save()
创建模型和更新模型

//Will create the model on the server by doing a `POST` to the `url`
sidebar.save();
这将有效地做到:

POST 1.php
{
   "param": "Sasha",
   "date": 12312311228
}
服务器用模型副本和标识它的ID(来自数据库的ID)进行响应

主干将获取ID并将其保存到模型。从那时起,
save
将转到
UPDATE
,而不是
POST

因此:

{
   "id": 123,
   "param": "Sasha",
   "date": 12312311228
}
model.save({new:'attribute'});

UPDATE 1.php
{
   "id": 123,
   "new": "attribute",
   "param": "Sasha",
   "date": 12312311228
}