我找到了如何更新模型的示例。示例如下所示:
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);
我找不到查询“创建”的示例。 帮助从服务器创建一代新模型?
我读到有一个描述这个过程的属性是一个属性“id”......我想看到它。
答案 0 :(得分:2)
你并没有真正按照设计使用Backbone:P
首先要意识到的是,当您执行Model.extend
时,您正在为模型创建constructor
/ prototype / blueprint,而不是实际的instance
新模型。
它包含方法和属性,这些方法和属性是模型的所有实例的元数据。一个" meta"的例子。财产将是:
url
:您将要对其执行操作的网址。 parse
:"解包"的功能响应(例如:如果它有一个外部"数据"包装器)这些属性都不是模型的实际属性。他们只是对他们采取行动的元。
拥有构造函数后,您可以使用new
创建新模型。
var Sidebar = Backbone.Model.extend({
url:'1.php'
});
var sidebar = new Sidebar({
param:'sasha',
time:(new Date()).getTime()
});
Backbone的update
和create
之间的区别在于存在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": 123,
"param": "Sasha",
"date": 12312311228
}
Backbone将获取ID并将其保存到模型中。从save
到UPDATE
而不是POST
。
所以:
model.save({new:'attribute'});
UPDATE 1.php
{
"id": 123,
"new": "attribute",
"param": "Sasha",
"date": 12312311228
}