0

当以下 foreach 被绑定时,我需要能够让视图将 html 从 $.get 或硬编码添加到“body”div。我需要“模型”成为那个 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

不太确定这是否是您所要求的,但是当您使用该ko.applybindings()方法启动应用程序绑定时,您可以传入第二个参数,该参数指定您希望绑定到的 DOM 元素。

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

这在评论中得到了回答,所以我想我会把它移到我可以选择作为答案的地方。

'html' 绑定就是所需要的。

对于我的特殊需求,我似乎无法在插入的 html 中获取 ko 绑定来呈现/执行操作,因此我切换到使用模板标记,其函数作为其值,这也提供了插入 html 的有效方法。

于 2012-10-10T23:48:26.240 回答