0

KOでコスチュームバインドを書く方法を知っています. しかし、durandal を使用している場合、どこにコードを配置すればよいでしょうか。ビューのアタッチとアクティブ化を使用しましたが、どちらからも愛されません。

ここに以下のコードがあります

//knockout-handlers.js
define(function (require) {
    ko.bindingHandlers.slideVisible = {
        init: function (element, valueAccessor) {
            var value = ko.utils.unwrapObservable(valueAccessor());
            $(element).toggle(value);
        },
        update: function (element, valueAccessor, allBindingsAccessor) {
            var value = valueAccessor(), allBindings = allBindingsAccessor();
            var valueUnwrapped = ko.utils.unwrapObservable(value);
            var duration = allBindings.slideDuration || 400;

            if (valueUnwrapped == true)
                $(element).slideDown(duration);
            else
                $(element).slideUp(duration);
        }
    };

    ko.bindingHandlers.fadeVisible = {
        init: function (element, valueAccessor) {
            var value = ko.utils.unwrapObservable(valueAccessor());
            $(element).toggle(value);
        },
        update: function (element, valueAccessor, allBindingsAccessor) {
            var value = valueAccessor(), allBindings = allBindingsAccessor();
            var valueUnwrapped = ko.utils.unwrapObservable(value);
            var duration = allBindings.fadeDuration || 400;

            if (valueUnwrapped == true)
                $(element).fadeIn(duration);
            else
                $(element).fadeOut(duration);
        }
    };
});
4

2 に答える 2

0

あなたの質問が理解できれば、デュランダルでカスタム バインディングをアクティブにすることはできません。ビューがレンダリングされる前の任意の場所に追加します。ハンドラーごとにモジュールを作成し、main.js でそれを必要とします。

同様の問題がありました。ソース: https://groups.google.com/forum/#!topic/durandaljs/NIBVLKN6v1Y

于 2013-08-19T20:07:33.707 に答える