1

Backbone.js を学習しようとしています。ビューでモデル変更イベントを定義しようとしていますが、次の JavaScript エラーが発生しています: Uncaught TypeError: Cannot call method 'on' of undefined

ビューから初期化を取り出すと、エラーなしでテキストが表示されます。

バックボーン アプリの正しい基本構造を持っていますか? 私は何を間違っていますか?

$(document).ready(function rdy() 
{
    var Person = Backbone.Model.extend({
        defaults: {
            name:   'Alex',
            age:    33,
            }
        });

    person = new Person();

    var ContentView = Backbone.View.extend({
      el: '#content',
      initialize: function() {
        this.model.on('change', this.render, this);  //ERROR HERE <----------
        }, 
    render: function () {
        this.$el.html("Aargh Hello " + person.get('name'));
        return this;
        }
    });

  var NavigationRouter = Backbone.Router.extend({
    routes: {
        "": "defaultRoute"
            },
    initialize: function (options) {
        this.view = new ContentView({});          
        return this;
        },
    defaultRoute: function (actions) {
        this.view.render();
        }
  });
  var navigationRouter = new NavigationRouter;
  Backbone.history.start();
 });
4

1 に答える 1

2

モデルをビューに渡す必要があります。お気に入り:

// Pass in the person you made earlier. Alternatively, you could use
// new Person() instead of creating the person separately
this.view = new ContentView({ model: person });

次に、レンダリング関数も使用する必要がありますthis.model

ビューにチェックを入れることもできますが、ビューがPersonモデルの存在に依存する場合は、忘れないように失敗させておく必要があります。

于 2013-08-03T01:36:00.417 に答える