4

ネストされたテンプレートの動作デモを使用してKnockout.js-External-Template-Engineを実装しようとしています

現在、私はそのようなセットアップを持っています

<ul data-bind="template: {name: 'TopTemplate'}"></ul>

<script type="text/html" id="TopTemplate">
    <li><span>Result</span>
        <ul data-bind=" template: {name:  'FooTemplate' , foreach: foos}">
        </ul>
    </li>
    <button data-bind='click: addFoo'>Add Foo</button>
</script>   

この TopTemplate をファイル (templates\view.html) に移動しようとすると、 view.htmlつまり

<li><span>Result</span>
<ul data-bind=" template: {name:  'FooTemplate' , foreach: foos} " style="list-style-type:circle;margin-left:15px">
</ul>
</li>
<button data-bind='click: addFoo'>Add Foo</button>

失敗します(バインディングを解析できません....foos が定義されていません)

これがwhichTemplateToUseで更新された私のビューモデルです

  var viewModel = {
    isEditable: ko.observable(false),
    foos: ko.mapping.fromJS([]),
    loadInitialData: function () {
        ko.mapping.fromJS(serverData, dataMappingOptions, viewModel.foos);
    },
    loadUpdatedData: function () {
        ko.mapping.fromJS(serverData, dataMappingOptions, viewModel.foos);
    },
    whichTemplateToUse: function() {
        return viewModel.isEditable() ? 'edit' : 'view';
    }
};

ここでポイントを逃したと確信していますが、トップテンプレートのデータバインド式を変更する必要がありますか?

外部サブテンプレートの読み込みを許可します。一番上のテンプレートは単純な静的テキストで動作するので、基本的な統合は正しいと思います。

ありがとう!

4

1 に答える 1

1

これとまったく同じことを行う良いデモを見つけました。

于 2012-08-07T02:10:50.057 に答える