0

次の foreach がバインドされると、$.get から、または単にハードコードされたビューで 'body' div に html を追加できるようにする必要があります。その vm になるには「モデル」が必要ですが、vm を取得してページに html を追加する方法がわかりません

<!--ko foreach:modules -->
<div class="module" data-bind="attr: {id:id}">
    <div class="head" data-bind="text:title"></div>
    <div class="body" data-bind=""></div>
</div>
<!-- /ko -->


my.Module = function (mod) {
    var m = mod || { },
        id = m.id || new Date().getTime(),
        css = ko.observable(m.css || { }),
        title = ko.observable(m.title || 'New Module'),
        privy = ko.observable(),
        model = ko.observable(new my.Models.DailyStatus());
    return {
        id: id,
        css: css,
        title: title,
        privy: privy,
        model: model
    };
};

my.Models.DailyStatus = function () {

    var venues = ko.observableArray(),
        init = function () {
            //Get HTML specific to my needs
            //Add to desired area of page
            //?????


            // Get data to fill venues
            update();
        },
        update = function () {
            my.service.getNewVenues(function (c) {
                venues(c.d.Payload);
            });
        };

    init();
    return {
        init: init,
        update: update,
        venues: venues
    };
};

モデルがホストになる要素を知る方法はありますか?

4

2 に答える 2

0

これはコメントで回答されたので、回答として選択できるものに移動すると考えました。

必要なのは「html」バインディングだけでした。

私の特定のニーズでは、挿入された html 内で ko バインディングを取得してレンダリング/アクションを実行することができなかったので、値として関数を持つテンプレート タグを使用することに切り替えました。これは、html を挿入する有効な方法も提供します。

于 2012-10-10T23:48:26.240 に答える
0

これがあなたの求めているものかどうかはよくわかりませんが、このko.applybindings()メソッドを使用してアプリケーション バインディングを開始するときに、バインド先の DOM 要素を指定する 2 番目の引数を渡すことができます。

ko.applyBindings(myViewModel, document.getElementById("Some-Element"));
于 2012-10-05T23:05:29.750 に答える