我一直遇到骨干问题,并向几个人寻求帮助,但到目前为止还没有运气。
我创建了一个像这样的新集合
let eventsCollection = new BandEvents({artist: 'Muse'});
在收藏中,我这样做
const BandEvents = Collection.extend({
model: Artist,
url: 'http://api.bandsintown.com/artists/' + this.artist + '/events.json?api_version=2.0&app_id=SomeID',
});
当我运行此代码时,我在浏览器控制台中收到以下错误
Uncaught TypeError: Cannot read property 'artist' of undefined
所以+ this.artist +
中的这个是未定义的。我不知道我做错了什么。
答案 0 :(得分:2)
此未定义,因为在此处设置url时未实例化集合。如果您需要使用url函数,我建议使用它:http://backbonejs.org/#Collection-url
答案 1 :(得分:0)
这就是我解决它的方式
我改变了
let eventsCollection = new BandEvents({artist: 'Muse'});
到
let eventsCollection = new BandEvents($('#artist-input').val());
(我需要从输入字段中获取艺术家姓名)
并改变了
const BandEvents = Collection.extend({
model: Artist,
url: 'http://api.bandsintown.com/artists/' + this.artist + '/events.json?api_version=2.0&app_id=SomeID',
});
到
const BandEvents = Collection.extend({
model: Artist,
initialize: function (artist) {
this.url = `http://api.bandsintown.com/artists/${artist}/events.json?api_version=2.0&app_id=ShowEvents`;
}
});
为此我使用ES6的Template Literals