次の 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
ます。allBindings
viewModel
bindingContext
理由はわかりませんが、viewModel
andbindingContext
は未定義です。
何か案が?
ありがとう。
アップデート
コード内の 1 行をコメントすると、次のことがわかりました。
ko.validation.makeBindingHandlerValidatable('dateRW');
次にviewModel
、init 関数でアクセスできます。それが問題のようです。さらに、 knockout.Validationの現在のバージョンは 1.01 であり、必要なもの (viewModel の追加プロパティ) と互換性がないようです。
誰かがこれについて私を助けてくれることを願っています。
ありがとう。