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.saveBackbone がまたはを使用してモデルを作成または更新すると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 に答える