获得淘汰赛绑定的元素?

时间:2012-10-05 22:33:48

标签: knockout.js

当下面的foreach绑定时,我需要能够将视图添加到' body' div来自$ .get或刚刚硬编码。我需要' model'是那个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
    };
};

有没有一种方法可以让我的模型知道哪个元素将成为他的主持人?

2 个答案:

答案 0 :(得分:0)

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

ko.applyBindings(myViewModel, document.getElementById("Some-Element"));

答案 1 :(得分:0)

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

只需要'html'绑定。

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