0

私は HandleBars JS を使用しようとしていますが、これまでのところほとんど機能しています。しかし、私は興味深い問題に遭遇しました。

3 つのテキスト フィールドを持つユーザー入力フォームをレンダリングするために HandleBars を取得しようとしています。テストのために、これら 3 つのテキスト フィールドを作成するために必要な JSON 文字列をドキュメントに貼り付けましたが、うまく機能しました。ただし、$.getJSON を使用し、テキスト フィールドをレンダリングするときに ajax を介してまったく同じ JSON 文字列を呼び出すと、CSS または jQuery ルールはフォームに適用されません。

静的文字列の周りに Document Ready を追加したため、この時点で Document Ready が呼び出されたことが原因であることがわかりましたが、CSS または JS ルールをレンダリングしなかったという同じことが起こりました。

すべての jQuery および CSS ルールを強制的に更新する方法はありますか? またはどうすればこれを機能させることができますか?

また、これはjQuery Mobileではないことに注意してください。

前もって感謝します..そして、反対票を投じる前に質問があるかどうか尋ねてください。

編集 - コードは次のとおりです。

静的バージョン

var source   = $("#form-template").html();
var template = Handlebars.compile(source);
var data = { 
    info: { id: 'longbeach2012', name: 'Long Beach 2012' },
forms: [
{id: "1", label: "This is a label", description: "", type: "text", name: "t1", username: "alan" },
{id: "2", label: "This is a label2", description: "description2", type: "text", name: "t2", username: "allison" },
{id: "3", label: "This is a label3", description: "description3", type: "text", name: "t3", username: "ryan" }
]};
var example = {title: "Sample Title", body: "Sample Body"};
$("#testForm").html(template(data));

動的バージョン

$.getJSON('http://register.local.dev/fetchtemplate',
{
    language: 'english',
    formid: 'longbeach2012'
},
function(data) {
    $.each(data, function(i,item){
        if( item.elem_type === 'text' )
        {
            var source = $("#textinput-template").html();
            var template = Handlebars.compile(source);
            $("#testForm").append(template(item));
        }
    });
});

ハンドルバー テンプレート

<script id="textinput-template" type="text/x-handlebars-template">
<div id="q{{elem_id}}">
    <div class="small">{{trans_label}}{{#if trans_description}}</br />
    <span class="notice">{{trans_description}}</span>{{/if}}</div>
    <input type="{{elem_type}}" name="{{elem_name}}" id="{{elem_name}}" value="{{trans_defaultValue}}" tabindex="1" autocomplete="off" />
</div>

4

1 に答える 1

0

私はそれを考え出した。

準備が整ったドキュメントから JavaScript コードの大部分を削除し、getJSON の実行が終了した後に残りの JavaScript を実行する関数を getJSON に呼び出させました。

于 2012-05-29T20:28:32.800 に答える