2

Ryan Niemeyer のブログに基づいて次のカスタム バインディングを作成しましたが、機能しませんでした。彼をフェードする代わりに、divはまったく表示されません。「init」関数を追加しようとしましたが、問題が解決しなかったため、ライアンが例に示したような単純な更新関数に戻りました。

ko.bindingHandlers.fadeInIf = {
    update: function(element, valueAccessor) {
        ko.bindingHandlers.if.update(element, valueAccessor);
        $(element).fadeIn(); 
    } 
};

htmlで次のことを行います:

<div data-bind="fadeInIf: show">...</div>

ブログ投稿: http://www.knockmeout.net/2011/07/another-look-at-custom-bindings-for.html

4

1 に答える 1

0

ifでプロキシしているバインディングは、fadeInIf実際には dom 要素の作成に使用されます。詳細については、このドキュメントを参照してください。

フェードインを実現するには、単純な必要があります。

ko.bindingHandlers.fadeInIf = {
    update: function(element, valueAccessor) {
        var value = ko.utils.unwrapObservable(valueAccessor());
        if (value) {
            $(element).fadeIn();
        }
    }
};

http://jsfiddle.net/madcapnmckay/3rRUQ/2/

あなたが望むものがもっとfadeVisibleバインディングである場合、私はその例もフィドルに含めました。

お役に立てれば。

于 2012-06-03T06:44:07.617 に答える