1

以下のようなエラーが発生しています。

Uncaught ReferenceError: Marionette is not defined 

私はfiles(main.ts->config, app.ts-> first class of the app)grunt watch (typescript compile with --module amd)を使用して以下を使用しています。私の質問は、エラーの問題に関するものです。アプリケーション(modules/marionette.d.ts)を使用Marionette.Application();および構成できるように、Marionette をインポートするにはどうすればよいですか?

main.ts;

// Require JS all the things
/// <reference path="modules/require.d.ts" />
/// <reference path="modules/marionette.d.ts" />

require.config({
    basePath: 'assets/js',
    paths : {
        backbone : 'vendor/backbone',
        underscore : 'vendor/underscore',
        jquery : 'vendor/jquery',
        marionette : 'vendor/backbone.marionette',
        debug : 'vendor/ba-debug',
        handlebars: 'vendor/handlebars'
    },
    shim : {
        jquery : {
          exports : 'jQuery'
        },
        underscore : {
          exports : '_'
        },
        backbone : {
          deps : ['jquery', 'underscore'],
          exports : 'Backbone'
        },
        marionette : {
          deps : ['jquery', 'underscore', 'backbone'],
          exports : 'Marionette'
        },
        handlebars: {
            exports:'Handlebars'
        },
        debug: {
          exports: 'debug'
        }
    }
});

// initalise the app
// load AMD module app.ts (compiled to app.js) , tsc --module AMD main.ts
// and include shims $, _, Backbone

require(['backbone', 'app','routers/router','routers/controller', 'debug', 'jquery','underscore'], (Backbone, App, CustomRouter, AppController, debug, $, _ ) => {

  debug.log('starting app');


  App.on('initialize:after', function(options) {
        if (Backbone.history) {
            Backbone.history.start();
        }

  });

  var router = new CustomRouter({
      controller : new AppController()
  });


  App.start();
});

app.ts;

/// <reference path="modules/marionette.d.ts" />
var app:any = new Marionette.Application();

app.addRegions({
   header : '#Header',
   // main   : CustomRegion.extend({el: '#main'})
   main  : '#Main'
});

app.addInitializer(function() {


});

ありがとう

4

2 に答える 2

1

marionetteapp.jsの実行を開始する前に、requireJS にロードするように指示する必要があります。

これは、amd-dependency を使用して行われます。

/// <amd-dependency path="marionette"/>

ここでサンプルを見ることができます: https://github.com/basarat/typescript-amd/blob/master/app/scripts/app.ts ビデオチュートリアルと共に: http://www.youtube.com/watch? v=4AGQpv0MKsA

于 2013-05-24T04:15:05.950 に答える
-1

私はこれを参照として使用しており、RequireJS と Marionette を使用した構造化バックボーンで完全に機能します。これが問題の解決に役立つことを願っています! :)

于 2013-08-17T08:22:05.033 に答える