1

イベント "form:selectedForm" がメソッド "showForm" を呼び出しているという問題がありますが、これをビューに送信すると、次のエラーが発生します: TypeError: e[t] は関数ではありません。

これは backbone.js スクリプトの 128 行目に記載されていますが、彼がそこで何をしているのかわかりません。コレクションの「to」または「on」イベントを探しているようです。

ここで何が間違っていますか?

MyController = Backbone.Marionette.Controller.extend({

initialize: function(options) {
    this.options = options;
    this.urls = options.urls;
    this.mainRegion = options.mainRegion;

    this.view  = new MyLayout();
    this.mainRegion.show(this.view);
    this.view.render();

    this.showSelectorView(this.view.formHeader);
},

showSelectorView : function(view) {
    var forms = new MyForms();
    forms = this.urls.loadForms;

    var selectorView = new FormSelectorView({
        collection: forms 
    });
    forms.fetch();
    this.listenTo(selectorView, "form:selectedForm", this.showForm);

    view.show(selectorView);
},

showForm : function(models) {
    console.log("showForm");
    var form = new FormContentView({
        collection: models
    });
        this.view.form.show(form);
    }
});

MyLayout = Backbone.Marionette.Layout.extend({

    template: Backbone.Marionette.TemplateCache.get('#content'),

    regions: {
        formHeader:         "#selector",
        form:           "#formContent",
        formContent:        "#content",
        formFooter:         "#save",
        formTemplates:      "#templates"
    }

});

FormSelectorView = Backbone.Marionette.ItemView.extend({

    template: Backbone.Marionette.TemplateCache.get('form-selector-template'),

    events : {
        "click option" : "selectForm"
    },

    initialize : function() {
        this.listenTo(this.collection, "sync", this.render, this);
    },

    selectForm : function(e) {
         e.preventDefault();
         var id = $(e.currentTarget).attr("name");
         var item = this.collection.get(id);

         this.trigger("form:selectedForm", item.attributes.fields);
    }
});
4

1 に答える 1