0

我有一個backbone.js的問題。我爲現有的api創建了一個前端,對我來說無法訪問。問題是,當我嘗試向集合中添加新模型時,我可以在我的螢火蟲中看到,每當主幹嘗試創建模型時,它都會將屬性名稱附加到該URL。如何停止單個模型將其ID添加到Backbone中的url?

實施例:

  1. 缺省URL =/API /數據庫
  2. 當我執行GET =/API /數據庫
  3. 當我與對象{ 「名稱」 執行GET/POST:「測試「} = /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() { 

    } 
}); 
+0

您設置了'idAttribute:「name」'。所以id是名字,並且沒有url函數,backbone使用默認的url函數。 –

回答

1

默認情況下,骨幹創建模型的網址是這樣的:{collection url}/{model id}

它認爲集合URL是以REST方式的基本URL。

在這裏,您只需要將url型號屬性設置爲您想呼叫的URL。這將覆蓋默認行爲。 http://backbonejs.org/#Model-url

+0

謝謝,它現在有效! – Kern

相關問題