3

オブザーバブルのいずれかが更新されたときに、オブジェクト サブスクリプションを更新するのに問題があります。

ここに私が取り組んでいるモデルがあります:

searchModel = function (startDate, endDate, searchTerm) {
var self = this;
self.StartDate = ko.observable(startDate);
self.EndDate = ko.observable(endDate);
self.SearchTerm = ko.observable(searchTerm);
};

これは、datepicker のオブザーバブルを更新するために使用しているバインディング ハンドラーです。

ko.bindingHandlers.datepicker = {
    init: function (element, valueAccessor, allBindingsAccessor) {
        //initialize datepicker with some optional options
        var options = allBindingsAccessor().datepickerOptions || {};
        $(element).datepicker(options).on("changeDate", function (ev) {
            var observable = valueAccessor();
            observable(ev.date);
        });
    },
    update: function (element, valueAccessor) {
        var value = ko.utils.unwrapObservable(valueAccessor());
        $(element).datepicker("setValue", value);
    }
};

これは、検索モデルを初期化してサブスクライブするために使用しているエクステンダー関数です。

ko.extenders.getEvents = (function (target, options) {
    function getEvents(target) {
        console.log(target);
    };

    getEvents(target());
    target.subscribe(getEvents);

    return target;
});

任意の助けをいただければ幸いです...要するに、ページをデフォルトの監視可能なモデル値(以下)で初期化し、オブジェクト内の監視可能なものが更新されるたびに、サブスクライブが開始されるので、「何かを行う」ことができます。

this.SearchCriteria = ko.observable(new searchModel('', '', '')).extend({
    getEvents: null
});

ここに私が取り組んでいるものがあります: JSFiddle

4

1 に答える 1