Backbone.js 木偶添加孙子视图

Backbone.js 木偶添加孙子视图,backbone.js,marionette,Backbone.js,Marionette,我正在构建一个带有标签功能的相册系统。您可以在相册中的图片中标记人物 我想在主干网中构建它,并尝试设置模型、集合和视图。模型和集合正在使用关系骨干网。我设法用照片显示列表,但现在的问题是显示每张照片中的标签 我该怎么做 到目前为止,我的代码是: require(['../../common'], function (common) { require( ["jquery", "underscore", "backbone", "backbone-relatio

我正在构建一个带有标签功能的相册系统。您可以在相册中的图片中标记人物

我想在主干网中构建它,并尝试设置模型、集合和视图。模型和集合正在使用关系骨干网。我设法用照片显示列表,但现在的问题是显示每张照片中的标签

我该怎么做

到目前为止,我的代码是:

require(['../../common'], function (common) {
  require(
    ["jquery",
    "underscore",
    "backbone",
    "backbone-relational",
    "marionette",
    "text!templates/phototag.tpl",
    "text!templates/tag.tpl",
    "pages/fotoalbum/models/album"
    ],
    function($, _, Backbone,Br,marionette,photoTpl,tagTpl,Album) {
      items = [
      {
        'fotonaam':'http://loremipsum.com/300/400',
        'tags':
        [
        {name:'John Doe', 'x':0.5, 'y':0.6},
        {name:'Pieter J', 'x':0.5, 'y':0.6}
        ]
      },
      {
        'fotonaam':'http://loremipsum.com/300/400',
        'tags':[
        {name:'Hans T', 'x':0.66, 'y':0.2}
        ]
      }
      ];



     var album = new Album( {'photos':items } );
     console.log(album);


      // vieww
      var TagItemView = Backbone.Marionette.ItemView.extend({
        tagName: "li",
        template: tagTpl
      });

      var PhotoItemView = Backbone.Marionette.CollectionView.extend({
        tagName: "li",
        template: photoTpl,
        childView: TagItemView
      });

      var AlbumCollectionView = Backbone.Marionette.CollectionView.extend({
        tagName: "ul",
        className: "list",
        childView: PhotoItemView
      });


      var myAlbumView = new AlbumCollectionView({'collection':album.get('photos')});
      myAlbumView.render();
      $('#photolist').append(myAlbumView.el);


    });

});

答案在木偶的合成视图中。 这是我的新代码:

require(['../../common'], function (common) {
  require(
    ["jquery",
    "underscore",
    "backbone",
    "backbone-relational",
    "marionette",
    "text!templates/phototag.tpl",
    "text!templates/taglist.tpl",
    "text!templates/tag.tpl",
    "pages/fotoalbum/models/album"
    ],
    function($, _, Backbone,Br,marionette,photoTpl,tagListTpl,tagTpl,Album) {
      items = [
      {
        img:'http://loremipsum.com/300/400',
        tags:
        [
        {name:'John Doe', x:0.5, y:0.6},
        {name:'Pieter J', x:0.5, y:0.6}
        ]
      },
      {
        img:'http://loremipsum.com/300/400',
        tags:[
        {name:'Hans T', x:0.66, y:0.2}
        ]
      }
      ];



      var album = new Album( {'photos':items } );

      var tagCollectionView = Backbone.Marionette.CompositeView.extend({
        template: tagListTpl,
        tagName: "ul",
      }); 

      var PhotoCollectionView = Backbone.Marionette.CompositeView.extend({
        template: photoTpl,
        tagName: "li",
        childViewContainer:'.info',
        childView: tagCollectionView, 
        model:this.model,
        initialize: function(){
          var tags = this.model.get('tags');
          this.collection = tags;
          this.model = this.model
        },
        serializeData: function(){
          return {
            "name": "some value"
          }
        }
      });

      var AlbumCollectionView = Backbone.Marionette.CollectionView.extend({
        tagName: "ul",
        className: "list",
        childView: PhotoCollectionView,
      });
      var myAlbumView = new AlbumCollectionView({'collection':album.get('photos')});
      myAlbumView.render();
      $('#photolist').append(myAlbumView.el);


    });

});

答案在木偶的合成视图中。 这是我的新代码:

require(['../../common'], function (common) {
  require(
    ["jquery",
    "underscore",
    "backbone",
    "backbone-relational",
    "marionette",
    "text!templates/phototag.tpl",
    "text!templates/taglist.tpl",
    "text!templates/tag.tpl",
    "pages/fotoalbum/models/album"
    ],
    function($, _, Backbone,Br,marionette,photoTpl,tagListTpl,tagTpl,Album) {
      items = [
      {
        img:'http://loremipsum.com/300/400',
        tags:
        [
        {name:'John Doe', x:0.5, y:0.6},
        {name:'Pieter J', x:0.5, y:0.6}
        ]
      },
      {
        img:'http://loremipsum.com/300/400',
        tags:[
        {name:'Hans T', x:0.66, y:0.2}
        ]
      }
      ];



      var album = new Album( {'photos':items } );

      var tagCollectionView = Backbone.Marionette.CompositeView.extend({
        template: tagListTpl,
        tagName: "ul",
      }); 

      var PhotoCollectionView = Backbone.Marionette.CompositeView.extend({
        template: photoTpl,
        tagName: "li",
        childViewContainer:'.info',
        childView: tagCollectionView, 
        model:this.model,
        initialize: function(){
          var tags = this.model.get('tags');
          this.collection = tags;
          this.model = this.model
        },
        serializeData: function(){
          return {
            "name": "some value"
          }
        }
      });

      var AlbumCollectionView = Backbone.Marionette.CollectionView.extend({
        tagName: "ul",
        className: "list",
        childView: PhotoCollectionView,
      });
      var myAlbumView = new AlbumCollectionView({'collection':album.get('photos')});
      myAlbumView.render();
      $('#photolist').append(myAlbumView.el);


    });

});