-1

私のベースコレクションにはベースパスがあり、ベースパスからさらにURLを拡張しています..しかし、拡張コレクションのURLをコンソールしている間、URLのフルパスを取得していません..

代わりに、私はURLを取得しています-拡張コレクションにあるもの..なぜ私はそのようになっているのですか、そして適切なアプローチは何ですか?

ここに私の試みがあります:

BaseCollection = Backbone.Collection.extend({
    path: 'http://path/to/api'
});

TeachersCollection = BaseCollection.extend({
    url:"xyz/abc",
    initialize:function(){
        console.log(this.url);//xyz/abc - why i am getting like this instead of full path?
        //full url should be 'http://path/to/api/xyz/abc' - how can i get like this..?
    }
});

var x = new TeachersCollection;

ライブデモ

4

3 に答える 3

1
  1. pathBackbone のどのクラスの特別なプロパティでもない
  2. モデルは を持つことができますがurlRoot、コレクションにはそのようなものはありません

これはあなたのために働くはずのアプローチです

TeachersCollection = BaseCollection.extend({
    url:function() {
        return this.path + "/xyz/abc"
    },
    initialize:function(){
        // this.url = _.result(this, 'url');
        console.log(_.result(this, 'url'));
    }
});

基本コレクションを大幅に拡張する場合は、次のように、基本コレクションのコンストラクターを変更することを実際に検討することをお勧めします。

BaseCollection = Backbone.Collection.extend({
    constructor: function() {
        this.url = 'http://path/to/api' + this.url;
        Backbone.Collection.prototype.constructor.apply(this, arguments);
    }
});

TeachersCollection = BaseCollection.extend({
    url: "/xyz/abc",
    initialize:function(){
        console.log(this.url);//xyz/abc
        //full url should be 'http://path/to/api/xyz/abc'
    }
});

var x = new TeachersCollection;
于 2013-08-14T06:39:56.090 に答える