【发布时间】:2015-10-31 15:06:17
【问题描述】:
我有一个模型和一个监视列表集合
var Watchlist = Backbone.Model.extend({
'urlRoot': 'http://myurl/watchlists',
'defaults': {
id: null,
},
'initialize': function() {
this.set('movies', new MoviesCollection());
},
'parse': function( apiResponse ){
console.log("parsing wlist model");
console.log(apiResponse);
return apiResponse;
}
});
var Watchlists = Backbone.Collection.extend({
'url': 'http://umovie.herokuapp.com/unsecure/watchlists',
'model': Watchlist,
'parse': function( apiResponse ){
console.log("parsing wlist collection");
console.log(apiResponse);
return apiResponse;
}
});
还有一个模型和电影集合:
var MovieModel = Backbone.Model.extend({
urlRoot: "http://umovie.herokuapp.com/movies",
defaults: {
trackId: "",
nameId: ""
},
parse: function(response){
console.log("parsing moviemodel");
this.trackId=response.trackId;
return response;
}
});
var MoviesCollection = Backbone.Collection.extend({
model:MovieModel
});
如您所见,Watchlist 模型包含一系列电影。 当监视列表模型更新时,如何填充电影集合?它会自动填充吗?
另外,我正在执行以下操作以显示特定观看列表的电影,但它没有按预期工作......
<script type="text/template" id="watchlist-edit-template">
<h4><%= watchlist ? 'Edit' : 'Create new' %> Watchlist</h4>
<h5><%= watchlist ? '':'Enter watchlist name:' %></h5>
<textarea id="watchlistName" cols="50" rows="1"><%= watchlist? watchlist.name : '' %></textarea>
<hr>
<div id="hiddenWatchlistId" style="display:none;"><%= watchlist ? watchlist.id : 0 %></div>
<div class="list-group">
<% watchlist.movies.each( function( list ){ %>
<a href="#" class="list-group-item"><%= list.get("trackName") %></a>
<% }); %>
</div>
</script>
错误是“Uncaught TypeError: watchlist.movies.each is not a function” 我不知道如何摆脱这个错误......
当我显示监视列表模型的对象时,我收到以下信息: 对象{名称:“Liste2”,电影:数组 [1],id:“563458d59f12f3030069949f”} 这让我相信电影集合是一个数组而不是一个集合。我对吗?我应该如何解决这个问题?
我想我没有正确填充电影收藏。
你怎么看这一切? 谢谢
【问题讨论】:
-
查看一个与您的设置非常相似的工作示例:stackoverflow.com/questions/33232006/…
-
还可以查看What is the difference between url vs urlRoot,因为当您已经在您的收藏中设置了
urlRoot时,您可能不需要在您的模型上设置它。 -
能否请您显示呈现模板的代码片段?并且请从您的(第一个)代码块中删除冗长和分散注意力的
parse()方法 - 在这种情况下它们是无操作的。