1

ここで 1 つの重要な質問があります

パーシャルを別のパーシャルにネストすることは可能ですか?これは私がやろうとしていることです

-----------
index.html:
-----------
<html>
<head>
 <script src="jquery.js"></script>
 <script src="mustache.js"></script>
 <script src="javascript.js"></script>
 <script src="json1.js"></script>
 <script src="json2.js"></script>
<head>
<body>
<div id="mustacheContainer"></div>
</body>
<html>

--------------
test.mustache: (this file contains main template and partials)
--------------
<script id="tpl-one" type="text/html"><!--main template -->
{{fname}}
{{> tplThree}}
</script>

<script id="tpl-two" type="text/html">
{{lname}}
</script>

<script id="tpl-three" type="text/html">
{{> tplTwo}}
</script>

---------
json1.js:
---------
var user={
 fname:'joe',
 lname:'blogs',
}

---------
json2.js:
---------
var translations={
 someword:'its translation'
}

-------------------
javascript.js file:
-------------------
;$(function () {
    $.get('test.mustache', function(templates) {
        var template = $(templates).filter('#tpl-one').html();
        $.extend(json1,json2);
        var three = $(templates).filter('#tpl-three').html();
        three = {"tplThree": one};
        var html = Mustache.to_html(template, json1, three);
        $('#confirmationMustacheContainer').html(html);
    }, "html");

});

なぜ これが機能しないのですか?私は何を間違っていますか、このコンテキストの問題またはネスティングは口ひげでサポートされていませんか?これを行う方法はありますか? jqueryを使用して、外部ファイルからパーシャルをロードするにはどうすればよいですか?

これらは多くの質問です。多くのユーザーに役立つので、誰かが答えてくれることを願っています:)

ありがとう

4

2 に答える 2

2

本当に必要なのは、変数をクリーンアップして、パーシャル オブジェクトを適切に形成することだけです。json1およびjson2は定義されておらず、それぞれ および である必要がuserありtranslationsます。threeundefined を参照する部分オブジェクトのように見えるものでテンプレートを上書きしていますone

部分オブジェクトには、テンプレート名をキー (つまりtplTwo) として、部分テキストを値 (つまり{{lname}}) として持つ必要があります。

クリーンアップされたコードは次のとおりです。

// json1.js
var user = {
    fname: 'joe',
    lname: 'blogs',
}
// json2.js
var translations = {
    someword: 'its translation'
}

$.get('test.mustache', function(templates) {
    var json = $.extend(user, translations),
        one = $(templates).filter('#tpl-one').html(),
        three = $(templates).filter('#tpl-three').html(),
        two = $(templates).filter('#tpl-two').html(),
        partials = {
            "tplThree": three,
            "tplTwo": two
        };

    var html = Mustache.to_html(one, json, partials);
    $('#mustacheContainer').html(html);
}, "html");

これは、このjsFiddleで示されているように、予想される「ジョーブログ」を出力します

于 2012-07-27T19:14:43.810 に答える