3

次のように RequireJS を使用して html コンテンツをロードしたい:

define(function (require) {

"use strict";

return function (id) {
     var url = 'text!screens/' + id + '.html';
     var html = require(url);
}; });

しかし、私はこのエラーを受け取ります: エラー: モジュール名 "text!screens/home.html_unnormalized2" はコンテキスト用にまだロードされていません: _

この方法で試してみると:

define(function (require) {

"use strict";

return function () {
     var html = require('text!screens/home.html');
}; });

全て大丈夫。しかし、このアプローチはハードコアな URL のためあまり良くありません。どうすればこれを解決できますか?

4

1 に答える 1

11

あなたの場合のように、インラインのパラメトリックrequire呼び出しは、まだロードされていないモジュールに対してのみ非同期で実行できます。原則は次のとおりです(また、メモurlは配列内にあります):

var url = 'text!screens/' + id + '.html';
require([url],
    function(text) {
        // use text
    },
    function(err) { // OPTIONAL BUT GOOD PRACTICE
        // handle error
    }
);

これには、すぐに値を返すことができないという不都合があります。また、 promiseの原則(多くのライブラリ、jQueryによって実装されています) も参照してください。

于 2013-10-15T07:30:50.400 に答える