1

我有一个设置,我通过表单动态添加模型。相同的数据被插入到表的行中。一旦插入该行,我就会在该行上附加一个删除按钮。

现在,当我尝试删除插入的行时,我无法删除,因为该特定模型没有附加唯一 ID,因此在 DELETE 请求中没有发送 ID。但是一旦我通过获取来刷新整个集合,它就可以工作了。

我尝试使用这样的 cid 来获取整个模型:

deleterow:function(){

window.rowList.get(this.model.cid).destroy({wait:true,success:function(){

 }});

这行不通。我正在为 codeigniter 使用 phil sturgeon REST API。

编辑:

$this->response(json_encode($Q),201);

这里 $Q 是这样填充的:

    $this->db->where('id',$this->db->insert_id());
    $Q=$this->db->get('rows')->result();

作为回应,我得到这样的数据:

"[{\"id\":\"285\",\"name\":\"\",\"address\":\"\",\"city\":\"\",\"state\":\"\",\"zip\":\"\",\"email\":\"\",\"contact_number\":\"0\",\"alternate_number\":\"0\",\"row_type\":\"\",\"local_vat\":\"\",\"cst\":\"\",\"st\":\"\",\"excise_duty\":\"\"}]"

所以它也不是正确的 JSON 格式。我应该怎么办?

4

1 回答 1

3

model.save当 Backbone 使用或创建或更新模型时collection.create,从服务器发回的任何 JSON 数据都会自动set进入模型。例如,如果您保存一个新模型:

var model = collection.create({foo:'bar'});

这将导致POST请求被发送到模型的 url 根目录,其正文如下:

{"foo":"bar"}

您应该配置您的服务器以将创建的模型作为对POST请求的响应发回,例如:

{"id":100, "foo":"bar"}

然后,Backbone 会自动将响应中的任何新的和更改的属性复制到模型中,因此您将拥有:

var model = collection.create({foo:'bar'}, {success: function() {
  console.log(model.id); // -> 100
}});
于 2013-02-04T11:33:51.163 回答