1

次の bindingHandlers があります。

ko.bindingHandlers.dateRW = {
    init: function (element, valueAccessor, allBindings, viewModel, bindingContext) {
         ko.utils.registerEventHandler(element, "change", function () {
            var value = $(element).val();
            var dateFormatted = moment.utc(value, "DD/MM/YYYY");
            if (dateFormatted !== null && dateFormatted.isValid())
                observable(dateFormatted.toDate());
            else {
                observable(null);
                observable.notifySubscribers(null);
            }
        });
    },
    update: function (element, valueAccessor) {
        var value = ko.utils.unwrapObservable(valueAccessor());
        var date = (typeof value !== 'undefined') ? moment.utc(value) : null;
        var dateFormatted = (date !== null) ? date.format('DD/MM/YYYY') : '';
        $(element).val(dateFormatted);
    }
};

私からしてみれば:

<div data-bind="with: transport()" 
    <input type="text" data-bind="dateRW: startDate">
</div>

init 部分にはelement、、、、、がありvalueAccessorます。allBindingsviewModelbindingContext

理由はわかりませんが、viewModelandbindingContextは未定義です。

何か案が?

ありがとう。


アップデート

コード内の 1 行をコメントすると、次のことがわかりました。

ko.validation.makeBindingHandlerValidatable('dateRW');

次にviewModel、init 関数でアクセスできます。それが問題のようです。さらに、 knockout.Validationの現在のバージョンは 1.01 であり、必要なもの (viewModel の追加プロパティ) と互換性がないようです。

誰かがこれについて私を助けてくれることを願っています。

ありがとう。

4

0 に答える 0