Backbone.js-基本路径不包含子路径
在我的基本集合中,我有基本路径,从基本路径我扩展了更多的URL。。但是,当我在扩展集合中控制台url时,我没有得到url的完整路径 取而代之的是我得到的url——扩展集合所拥有的。。为什么我会这样,正确的方法应该是什么 以下是我的尝试:Backbone.js-基本路径不包含子路径,backbone.js,backbone.js-collections,Backbone.js,Backbone.js Collections,在我的基本集合中,我有基本路径,从基本路径我扩展了更多的URL。。但是,当我在扩展集合中控制台url时,我没有得到url的完整路径 取而代之的是我得到的url——扩展集合所拥有的。。为什么我会这样,正确的方法应该是什么 以下是我的尝试: BaseCollection = Backbone.Collection.extend({ path: 'http://path/to/api' }); TeachersCollection = BaseCollection.extend({
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;
也许您可以编写以下代码:
console.log(this.path+this.url)
最简单的解决方案是使用函数,然后可以执行以下操作:
TeachersCollection = BaseCollection.extend({
url: function() {
return this.path + '/xyz/abc';
},
//...
在这种情况下,尝试仅为url使用字符串的问题是获取正确的url,以便可以查找路径。您可以浏览BaseCollection.prototype:
但这相当麻烦和嘈杂,我不认为节省函数调用的开销值得这么麻烦
路径不是任何主干类的特殊属性
模型可以有urlRoot,但是对于集合没有这样的功能
:
如果要对基本集合进行大量扩展,您实际上可能需要考虑更改其构造函数:
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;
我可以这样写,但是当我获取数据时,它应该从完整路径获取,对吗。。?这不仅仅是安慰,我需要使用我的基本urlYes获取数据。我认为这是一个外部api,所以你可以使用它-
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;