1

backbone.js に問題があります。アクセスできないため、既存のAPIのフロントエンドを作成しています。問題は、新しいモデルをコレクションに追加しようとすると、バックボーンがモデルを作成しようとするたびに属性名を URL に追加することが firebug で確認できることです。

例:

  1. デフォルトの URL = /api/データベース
  2. GET = /api/database を実行すると
  3. object {"name": "test"} = /api/database/test で GET/POST を実行すると、結果が返されます

誰でもその動作を回避する方法を知っていますか?

こんにちはカーン

私の見解:

window.databaseView = Backbone.View.extend({
  el: '#content',

  template: new EJS({url: 'js/templates/databaseView.ejs'}),

  initialize: function() {
    var self = this;
    this.collection.fetch({
      success: function() {
        console.log(self.collection);
        var test = self.collection.get("_system");
        console.log(test);
        self.collection.get("_system").destroy();
        self.collection.create({name: "test"});
      }   
    }); 
  },  

  render: function(){
    $(this.el).html(this.template.render({}));
    return this;
  }

});

モデル:

window.Database = Backbone.Model.extend({
  initialize: function () {
    'use strict';
  },  

  idAttribute: "name",

  defaults: {
  }

});

コレクション:

window.ArangoDatabase = Backbone.Collection.extend({
  model: window.Database,

  url: function() {
    return '../../_api/database/';
  },  

  parse: function(response) {
    return _.map(response.result, function(v) {
      return {name:v};
    }); 
  },  



  initialize: function() {
    this.fetch();
  },  

  getDatabases: function() {
    this.fetch();
    return this.models;
  },  

  dropDatabase: function() {

  },  

  createDatabse: function() {

  }
});
4

1 に答える 1

2

デフォルトでは、バックボーンは次のようにモデル URL を作成します: {collection url}/{model id}.

コレクション URL は、RESTful な方法でベース URL と見なされます。

urlここでは、呼び出したい URL にModel プロパティを設定するだけです。これにより、デフォルトの動作が上書きされます。http://backbonejs.org/#Model-url

于 2013-10-25T17:52:56.113 に答える