1

製品を追加したいのですが、ノードを見つけてフラッシュさせます

products = observableArray([]);

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

afterAddを使ってみましたが、何かを追加するたびに点滅しました。追加機能の1つだけでフラッシュする必要があります。追加する他の関数は、要素をフラッシュしないでください。

注:flashはカスタムJQuery関数です

4

1 に答える 1

4

オブザーバブルは複数の要素にバインドできるため、カスタム バインディングの形式で要素から実際に取得することをお勧めします。

最も単純には、次のようなバインディングを使用できます。

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/

于 2012-01-18T14:35:34.727 に答える