rfm*_*ill 0 javascript backbone.js marionette
我正在关注两个教程,以便在我的Backbone应用程序中使用嵌套的CompositeViews(http://lostechies.com/derickbailey/2012/04/05/composite-views-tree-structures-tables-and-more/和http: //davidsulc.com/blog/2013/02/03/tutorial-nested-views-using-backbone-marionettes-compositeview/)但是我很难适应我的情况,通过存储id来关联两个模型另一个模特.
我正在尝试实现一个电影列表,每个电影列出它下面的相关演员.
这是我目前所拥有的显示电影列表但不呈现任何演员列表的内容:
MovieApp.module("ActorsApp.List", function(List, MovieApp, Backbone, Marionette, $, _){
List.Controller = {
listActors: function(){
var actors = MovieApp.request("actor:entities");
var movies = new Backbone.Collection;
var allMovies= MovieApp.request("movie:entities");
actors.each(function(actor) {
movieId = actor.get("movieId");
if (!movies.get(movieId) ){
console.log("Movie not found. Adding to list list.");
movie = allMovies.get(movieId);
selectedActors = actors.where({ movieId: movieId });
console.log("Selected Actors: ", selectedActors);
movie.actors=selectedActors;
movies.add(allMovies.get(movieId));
}
else {
console.log("Movie found in list. Skipping.")
}
});
var moviesListView = new List.Movies({
collection: movies
});
MovieApp.mainRegion.show(moviesListView);
}
}
});
/* list_view.js */
PassCake.module("SitesApp.List", function(List, PassCake, Backbone, Marionette, $, _){
List.Actor = Marionette.ItemView.extend({
tagName: "li",
template: "#actor-list-item",
initialize: function(){
console.log("Actor ItemView: " + this.model.get('title'));
}
});
List.Movie = Marionette.CompositeView.extend({
tagName: "li",
template: "#actor-movie-list-item",
itemView: List.Actor,
initialize: function(){
console.log("Actors: ", this.model.actors);
actors = this.model.actors;
/* The following line throws an error saying TypeError: obj[implementation] is not a function obj[implementation](name, callback, this);
Outputting this.model.actors seems to work but it isn't working when assigned to this.collection.
*/
this.collection = actors;
console.log("Movie view initialized");
}
});
List.Movies = Marionette.CompositeView.extend({
tagName: "div",
template: "#actor-movies-list",
itemView: List.Movie,
itemViewContainer: "#actors-movies"
});
});
Run Code Online (Sandbox Code Playgroud)
我对Backbone很陌生,所以我很想知道如何让这个更干净.谢谢参观!
首先,使用var更多,你宣布了很多全局变量.
我的猜测是,行this.collection = actors;,actor不是Backbone Collection它可能是一个数组,假设actors.where({ movieId: movieId });返回一个数组.
尝试将线路更改为 this.collection = new Backbone.Collection(actors)
| 归档时间: |
|
| 查看次数: |
1622 次 |
| 最近记录: |