0

* 更新: 解決済み、下にスクロールしてください *

以下では、リストがレンダリングされますが、行はレンダリングされません。これは、複合ビュー内でコレクションを定義していないためです。

collection: new Users in list.js を入力すると、次のエラーが発生します。

Uncaught TypeError: Object function () {
        return parent.apply(this, arguments);
      } has no method 'on' 

backbone.js: 行 203、つまり:

// An inversion-of-control version of `on`. Tell *this* object to listen to
    // an event in another object ... keeping track of what it's listening to.
    listenTo: function (obj, name, callback) {
      var listeners = this._listeners || (this._listeners = {});
      var id = obj._listenerId || (obj._listenerId = _.uniqueId('l'));
      listeners[id] = obj;
      obj.on(name, typeof name === 'object' ? this : callback, this);
      return this;
    },

ビュー

行.js

define([
  'marionette',
  'text!app/views/templates/user/row.html'
],
  function (Marionette, Template) {
    "use strict"

    return Marionette.ItemView.extend({
      template: Template,
      tagName: 'tr'
    })

  })

list.js

define([
  'marionette',
  'text!app/views/templates/user/list.html',
  'app/collections/users',
  'app/views/user/row'
],
  function (Marionette, Template, Users, User) {
    "use strict"


    return Backbone.Marionette.CompositeView.extend({


      template: Template,
      itemView: User,
      itemViewContainer: "tbody",


    })
  })

これは、次のようにすることで解決されました。

ユーザー/list.js

define([
  'marionette',
  'text!app/views/templates/user/list.html',
  'app/collections/users',
  'app/views/user/row'
],
  function (Marionette, Template, Users, User) {
    "use strict"

    return Backbone.Marionette.CompositeView.extend({
      template: Template,
      itemView: User,
      itemViewContainer: "tbody",
      initialize: function() {
        this.collection = new Users()
        this.collection.fetch()
      }
    })
  })

ユーザー/row.js

define([
  'marionette',
  'text!app/views/templates/user/row.html'
],
  function (Marionette, Template) {
    "use strict"

    return Backbone.Marionette.ItemView.extend({
      template: Template,
      tagName: "tr"
    })
  })
4

1 に答える 1

0

よろしいですか

  1. コレクションインスタンスを複合ビューに渡しますか? いえnew Users()
  2. fetch()コレクションの で表示するデータを取得していますか?
于 2013-09-04T07:01:24.380 に答える