0

私はバックボーンに少し慣れていないため、以下のコードでは、RequireJS を使用しAceModelてロードするときにコンストラクターを呼び出すことができません。AceViewつまり、AceView内のコールバック関数でパラメーター パスを削除すると、snap.js呼び出しnew AceModel()て機能しますがAceView、コンストラクターがエラーで失敗しますTypeError: Cannot call method 'get' of undefined

何が起きてる?

ビュー/snap.js

define([
    'jquery',
    'underscore',
    'backbone',
    'models/Panel',
    'models/ace',
    'views/ace',
    'views/panel'
], function ($, _, Backbone, Panel, AceView, AceModel, PanelView) {
    'use strict';

    var SnapView = Backbone.View.extend({

        initialize: function () {
            this.el = '#snap';
            this.$el = $(this.el);
            this.$elLoadSbml = this.$el.children().find('div#loadSbml');
            this.loadSbmlView = new AceView({
                el: this.$elLoadSbml[0],
                model: new AceModel({mode: 'monokai'})
            });
        },

    });

    return SnapView;
});

ビュー/ace.js

define([
    'jquery',
    'underscore',
    'backbone'
],
    function($, _, Backbone) {
        'use strict';

        var AceView = Backbone.View.extend({
            initialize: function () {
                this.editor = ace.edit(this.el);
                this.editor.setTheme("ace/theme/" + this.model.get('theme'));
                this.editor.getSession().setMode("ace/mode/" + this.model.get('mode'));
                this.render();
            },

            render: function () {
                $(this.el).height(this.model.get('height'));
                $(this.el).width(this.model.get('width'));
                this.editor.resize();
            }
        });
        return AceView;
    });

models/ace.js

define([
    'jquery',
    'underscore',
    'backbone'
], function ($, _, Backbone) {
    'use strict';

    var AceModel = Backbone.Model.extend({
        defaults: {
            height: 800,
            width: 400,
            theme: 'github',
            mode: 'xml'
        }
    });

    return AceModel;
});
4

1 に答える 1

1

インポートの順序に小さなバグがあるようです:

'jquery', -> $,
'underscore', -> _
'backbone', -> Backbone
'models/Panel', -> Panel
'models/ace', -> AceView
'views/ace', -> AceModel
'views/panel -> PanelView

あなたは交換models/aceし、views/ace

于 2013-03-05T07:15:54.883 に答える