如何在Knockoutjs中获取绑定到模型的元素

时间:2012-01-18 14:11:35

标签: jquery knockout.js dom-node

我想添加一个产品,找到一个让它闪存的节点

products = observableArray([]);

new_product = new Product();
products.push(new_product);
$("tr", new_product.elements).flash();

我尝试使用afterAdd,但每次添加内容时都会闪烁。 我只需要使用我的一个添加功能进行闪光。添加的其他功能不应该闪烁元素。

注意:flash是一个自定义的JQuery函数

1 个答案:

答案 0 :(得分:4)

由于observable可以绑定到多个元素,因此最好的选择是以自定义绑定的形式从元素中获取它。

最简单的方法是,您可以使用类似的绑定:

ko.bindingHandlers.flash = {
    init: function(element) {
        $(element).flash();
    }
};

在您的元素上使用它,例如:<li data-bind="flash: true"></li>。在这种情况下,传递给绑定的内容无关紧要。

以下是一个示例:http://jsfiddle.net/rniemeyer/Exmvh/

您当然可以将选项传递给绑定,例如:

ko.bindingHandlers.flash = {
    init: function(element, valueAccessor) {
        var duration = ko.utils.unwrapObservable(valueAccessor());
        $(element).hide().flash(duration);
    }
};

并使用它:<li data-bind="flash: 500"></li>或使用可用于控制持续时间的观察点:<li data-bind="flash: selectedDuration"></li>

以下是一个示例:http://jsfiddle.net/rniemeyer/Exmvh/1/