【问题标题】:calling viewmodel functions from element bound using applyBindingsToNode fails从使用 applyBindingsToNode 绑定的元素调用 viewmodel 函数失败
【发布时间】:2013-12-10 03:36:38
【问题描述】:

我刚开始使用 applyBindingsToNode,它非常适合我想要的东西,但需要注意的是......函数似乎不起作用。

    ko.applyBindingsToNode(newNode.get()[0], {
        //template: { name: 'relationshipNode', data: ent },
        click: ent.select, //does not work
        clickBubble: false,
        event: {
            contextmenu: ent.rightClick, //does not work
            mouseover: ent.toggleHover, //does not work
            mouseout: ent.toggleHover //does not work
        },
        attr: {
            'data-name': ent.name, //works
            'data-type': ent.type //works
        },
        css: {
            selected: ent.selected, //works
            hover: ent.hovered //works
        },
        text: ent.name //works
    })

这是一个例子,悬停功能

    self.toggleHover = function (entity, event) {
        entity.hovered(!entity.hovered());
    }

它会抛出一个错误,因为“实体”未定义。

所有这些函数都可以在运行时使用 data-bind 属性创建的元素上正常工作,如下所示:

<div data-bind="click: select, clickBubble: false, event: { contextmenu: rightClick, mouseover: toggleHover, mouseout: toggleHover }, attr: {'data-name': name, 'data-type': type }, css: { selected: selected, hover: hovered }"></div>

【问题讨论】:

    标签: javascript data-binding knockout.js


    【解决方案1】:

    ko.applyBindingsToNode(以及在 3.0 中添加的 ko.applyBindingAccessorsToNode)接受作为绑定上下文的第三个参数。许多绑定(事件/点击、模板、控制流绑定)都使用此上下文。

    【讨论】:

    • 很奇怪。刚刚将“ent”作为第三个参数传递,果然,它现在可以工作了。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-18
    • 2014-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-08
    • 1970-01-01
    相关资源
    最近更新 更多