3

ノックアウトでは、次のようなテンプレートを使用できます。

<div data-bind="template: { name: 'person-template', data: buyer }"></div>

    <script type="text/html" id="person-template">
        <h3 data-bind="text: name"></h3>
        <p>Credits: <span data-bind="text: credits"></span></p>
    </script>

function MyViewModel() {
        this.buyer = { name: 'Franklin', credits: 250 };
}
ko.applyBindings(new MyViewModel());

これは非常にうまく機能しますが、サーバーから返されるデータに応じて、その場で JavaScript でテンプレートを作成しようとしています。

私が直面している同じ問題について議論し、ko.jqueryTmplTemplateEngine に基づく解決策を説明して いる記事があります。

誰でもこれを機能させるのを手伝ってもらえますか?

または、これを行う別の (より簡単な) 方法はありますか?

ありがとう

4

1 に答える 1

3

これをチェックしてください。ご覧のとおり、templatoUse は項目のタイプに基づいてテンプレートを作成します。

self.templatoUse = function (item) {

    var tmplName = 'tmpl-' + item.type;

    if ($('#' + tmplName).get().length == 0) {
        // create template based on item type
        var content = 'Template ' + tmplName + '<br/>&nbsp;<span data-bind="text:name"></span><br/>';

        // wrap the template    
        content = '<div id="' + tmplName + '">' + content + '</div>';

        // had it so it can be used
        $('#templateContainer').append(content);
    }
    return tmplName;

} 

フィドルを見る

お役に立てば幸いです。

于 2013-06-15T11:49:13.213 に答える