Как мне остановить одну модель, добавляющую свой идентификатор к URL-адресу в Backbone?

у меня проблема с backbone.js. Я создаю интерфейс для существующего API, для меня недоступного. Проблема в том, что когда я пытаюсь добавить новую модель в коллекцию, я вижу в своем firebug, что каждый раз, когда магистраль пытается создать модель, она добавляет имя атрибута к URL-адресу.

Пример:

  1. URL-адрес по умолчанию = /api/база данных
  2. когда я выполняю GET = /api/database
  3. когда я выполняю GET/POST с объектом {"name": "test"} = /api/database/test является результатом

Кто-нибудь знает, как избежать такого поведения?

Привет Керн

Мой взгляд:

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() {

  }
});

person Kern    schedule 25.10.2013    source источник
comment
Вы установили idAttribute: "name". Таким образом, идентификатор — это имя, а функции URL нет, магистраль использует функцию URL по умолчанию.   -  person KiT O    schedule 25.10.2013


Ответы (1)


По умолчанию Backbone создает URL-адреса моделей следующим образом: {collection url}/{model id}.

Он считает URL-адрес коллекции базовым URL-адресом в RESTful.

Здесь вам нужно только установить свойство Model url на URL-адрес, который вы хотите вызвать. Это перезапишет поведение по умолчанию. http://backbonejs.org/#Model-url

person Simon Boudrias    schedule 25.10.2013