1

これが私のエラーです:

Uncaught NoTemplateError: Could not find template: '<!-- HTML Template --> 
<div id="start_div">

<h2>Choose your path to ... // the rest of the template

テンプレートがないことを教えてくれますが、見つからなかったと言ったテンプレートを出力します。

これが私のコードです:

require(["jquery", "marionette", "views/StartView" ],
function($, marionette, StartView) {

  var SCApp = new marionette.Application();

  SCApp.addRegions({
      mainRegion: "#center_court"
  });
  var startView = new StartView();
  SCApp.mainRegion.show(startView);
  SCApp.start();

}

これがStartView.jsです

define(["jquery", "marionette", "text!templates/startDiv.html"],

function($, marionette, template){

    var StartView = marionette.ItemView.extend({
       //template: "#start_div"
        template: template
    });

    // Returns the View class
    return StartView;

});

誰かが私が間違っていることを見ることができますか?requireメソッドでテンプレートを作成するために何かが必要ですか?

どんな提案でも大歓迎です。

アンドリュー

4

2 に答える 2

2

通常、Marionetteは、ビューで参照しているIDと同じIDを持つDOM内のテンプレートを検索するため、次のように、loadTemplateをMarionette.TemplateCacheから変更する必要があります。

Backbone.Marionette.TemplateCache.prototype.loadTemplate = function(templateId) {

    var template = templateId;

    if (!template || template.length === 0){
        var msg = "Could not find template: '" + templateId + "'";
        var err = new Error(msg);
        err.name = "NoTemplateError";
        throw err;
    }

    return template;
};

私は実際にこの関数をどこで見つけたか覚えていません。マリオネットのWikiでもう見つけることができません。とにかく、それは私にとってはうまく機能しています。

于 2013-01-24T11:12:32.000 に答える
0

昨日同じ問題が発生し、次の興味深い事実が見つかりました。

  1. 「見つかりません」テンプレートのコンテンツを変更したときに、エラー メッセージで変更されませんでした。
  2. ファイル名を変更した(そしてインポートステートメントで更新した)と、エラーが修正され、更新されたコンテンツが表示されました。
  3. ...その後、名前を元に戻しました。すべて問題ありませんでした。

キャッシングのバグのようです。

Upd:ここで私は深い分析と解決策を見つけました:

http://blog.icanmakethiswork.io/2014/03/caching-and-cache-busting-with-requirejs.html

于 2015-08-26T08:22:29.927 に答える