0

私は can.js を使用しており、テンプレートをプリコンパイルしてロードしようとしています。テンプレートを取得し、can-compileを使用してプリコンパイル し、結果のスクリプト ファイルに次のようにロードしました。

(function(window) {
    can.Mustache('block_tpl.mustache', '<template string goes here>');
}(this));

「can.Mustache」で登録しているとは思えませんか?コンパイル済みのテンプレートを can.js に登録する方法を知っている人はいますか?

編集:

@Daff、can.Mustacheを使用すると(私はcan.jqueryを使用しています)、(a)can.mustacheが未定義であり、(b)たとえば次のように入力した場合:

can.Mustache('jim_tpl', "<p>My name is Jim</p>");

...Mustache コンストラクターに到達すると、次のようになります。

var Mustache = function(options, helpers) {
            if (this.constructor !== Mustache) {
                var mustache = new Mustache(options);
                return function(data, options) {
                    return mustache.render(data, options);
                };
            }
            if (typeof options === "function") {
                this.template = {fn: options};
                return;
            }
            can.extend(this, options);
            this.template = this.scanner.scan(this.text, this.name);
        };

...新しい Mustache を構築する場所 (ln. 3) で、テンプレート名をオプション引数として渡します。それをスキャナーに渡すまでに、テンプレート名の文字列であった下部の「オプション」の fn は、各プロパティがその文字列の 1 文字であるオブジェクトになります...

4

2 に答える 2

0

私たちはまだ CanJS 2.0.7 を使用しており、次を使用してテンプレートをプリコンパイルしています。can.view.mustache()

参照: https://github.com/reciprocity/ggrc-core/blob/develop/src/ggrc/assets/javascripts/application.js#L1490

于 2014-12-09T00:17:26.863 に答える