Backbone.js 为什么在这个木偶合成视图中不呈现元信息?

Backbone.js 为什么在这个木偶合成视图中不呈现元信息?,backbone.js,marionette,Backbone.js,Marionette,我得到了这样一个意想不到的行为:用一个带木偶的CompositeView加载元信息。来自服务器端的JSON如下所示: { "meta": { "total": 2 }, "movies": [ { "category": "Action", "description": "Another story goes ....", "id": 1, "s

我得到了这样一个意想不到的行为:用一个带木偶的CompositeView加载元信息。来自服务器端的JSON如下所示:

{ "meta": { "total": 2 }, "movies": [ { "category": "Action", "description": "Another story goes ....", "id": 1, "stars": "4.0", "title": "My test movie" }, { "category": "Action", "description": "the story goes....", "id": 2, "stars": null, "title": "my second movie" } ] } { “元”:{ “总数”:2 }, “电影”:[ { “类别”:“行动”, “描述”:“另一个故事发生了……”, “id”:1, “明星”:“4.0”, “标题”:“我的测试电影” }, { “类别”:“行动”, “描述”:“故事是这样的……”, “id”:2, “星星”:空, “标题”:“我的第二部电影” } ] } 我使用主干集合设置元信息,如:

MA.Collections.Movies = Backbone.Collection.extend({ url: '/api/movies.json', parse: function(data) { this.meta = new MA.Models.MetaMovie(data.meta); return data.movies; } }); MA.addInitializer(function() { MA.Collections.Movies.model = MA.Models.Movie; }) MA.Collections.Movies=Backbone.Collection.extend({ url:“/api/movies.json”, 解析:函数(数据){ this.meta=新的MA.Models.MetaMovie(data.meta); 返回数据.movies; } }); MA.addInitializer(函数(){ MA.Collections.Movies.model=MA.Models.Movie; }) 但是当我试图从CompositeView访问这个元变量时,集合被正确初始化,而元信息似乎丢失了。你知道如何为CompositeView的模型提供这些元信息吗

PS控制台输出如下所示:

{ "meta": { "total": 2 }, "movies": [ { "category": "Action", "description": "Another story goes ....", "id": 1, "stars": "4.0", "title": "My test movie" }, { "category": "Action", "description": "the story goes....", "id": 2, "stars": null, "title": "my second movie" } ] }

从fetch设置回调,并使用它将meta.total的值直接设置到metaMovie模型实例上

movies.js:

MA.addInitializer(function(){
  var self = this;
  var metaMovie = new MA.Models.MetaMovie({total: 1});

  MA.collections.movies = new MA.Collections.Movies();
  MA.composites.movies = new MA.Views.Composites.Movies({
    itemView: MA.Views.Items.Movie,
    model: metaMovie,
    collection: MA.collections.movies
  });
  var p = MA.collections.movies.fetch();

  // see http://api.jquery.com/jQuery.ajax/ for details
  p.done(function(data) {
    self.metaMovie.set({total: data.total});
  });
});

从fetch设置回调,并使用它将meta.total的值直接设置到metaMovie模型实例上

movies.js:

MA.addInitializer(function(){
  var self = this;
  var metaMovie = new MA.Models.MetaMovie({total: 1});

  MA.collections.movies = new MA.Collections.Movies();
  MA.composites.movies = new MA.Views.Composites.Movies({
    itemView: MA.Views.Items.Movie,
    model: metaMovie,
    collection: MA.collections.movies
  });
  var p = MA.collections.movies.fetch();

  // see http://api.jquery.com/jQuery.ajax/ for details
  p.done(function(data) {
    self.metaMovie.set({total: data.total});
  });
});

您只返回解析函数中的data.movies.correct。我正在尝试这里建议的方法:如果您发布创建集合和视图实例的路由器/控制器的代码,我将向您展示一种完成您尝试的方法。谢谢!我在这里有一个应用程序:->然后有/views/composites和meta-views,你只返回数据。在你的解析函数中有电影。正确。我正在尝试这里建议的方法:如果您发布创建集合和视图实例的路由器/控制器的代码,我将向您展示一种完成您尝试的方法。谢谢!我在这里有一个应用程序:->然后有/views/composites和meta-views,我还需要触发一个render(),使用:MA.composites.movies.render();这样就行了!谢谢此外,我还需要触发一个render():MA.composites.movies.render();这样就行了!谢谢