0

对不起,我的头衔不好,但我真的不知道该怎么称呼它,有人可以正确地引导我走向正确的方向。

我在 Typescript 和 KnockoutFileDropArea 类中工作。

然后我想做的是如下所示:

<div data-bind="with:fileDropArea">
    <div data-bind="foreach:files">
    </div>
</div>

KnockoutFileDropArea 具有属性文件等。

上面是直截了当的。只需在我的 KnockoutFileDropArea 等视图模型上添加一个属性。但是我需要做的是,当它绑定我的 KnockoutFileDropArea 时,我想对它所绑定的 HtmlElement 做一些事情。

当我的 KnockoutFileDropArea 被绑定时,我该怎么做才能将某些东西附加到元素上?

创建一个新的(不记得它们叫什么,'BindingHandler')会更好吗,就像。所以它是这样的<div data-bind="droparea: fileDropArea">

4

1 回答 1

1

一个不错的选择是创建自定义绑定

您的自定义绑定可以仅在元素上执行您想要的功能并在绑定元素时运行,您可以将其与with绑定一起使用。

ko.bindingHandlers.test = {
    init: function(element, valueAccessor, allBindings, data, context) {
        //do something with the element
    }
}

否则,您的自定义绑定可以像这样包装with绑定:

ko.bindingHandlers.test = {
    init: function(element, valueAccessor, allBindings, data, context) {
        //do something with the element

        return ko.bindingHandlers["with"].init.apply(this, arguments);
    },
    update: function(element, valueAccessor, allBindings, data, context) {

        return ko.bindingHandlers["with"].update.apply(this, arguments);
   }
};

更新:在 KO 3.1 中,with绑定不再具有update函数,因为它现在可以init为此目的使用计算的。因此,update可以删除上面的功能。

注意:with被引用,因为较旧的 IE 不喜欢with用作属性名称。

于 2013-09-09T19:07:54.770 回答