Нокаут зависимыйОблюдаемый выстрел дважды - PullRequest
2 голосов
/ 25 января 2012

Я использую Castle Monorail & NVelocity View Engine.У меня есть следующая модель:

    var sampleModel ;

    jQuery(function () {
        var mappings = {
            'DateSent': ko.utils.dateConversionFunc()
        };

        sampleModel = {
            dto: ko.mapping.fromJS($dto, mappings),
            ReasonOtherId: $reasonOtherId,
            referralReasonOptions: $reasonOptions //$reasonOptions is a Json list
        };
        sampleModel.showOtherReason = ko.dependentObservable(function () {
            alert(this.dto.referralReason());
            return this.dto.referralReason() == this.ReasonOtherId;
        }, sampleModel);
        ko.applyBindings(sampleModel, jQuery('#referralContainer')[0]);
    }
    );

выберите data-bind = "value: dto.referralReason, options: referralReasonOptions.Options, optionsText: 'DisplayName', optionsValue: 'Id'">

Еслиdto.referralReason (или $ dto) пусто, sampleModel.showOtherReason будет срабатывать один раз и сообщать Id.Странно то, что если $ dto НЕ пусто, sampleModel.showOtherReason выполняется два раза, а два предупреждения всплывают, первое предупреждение показывает «1405», что правильно, но затем запускается другое предупреждение, которое «не определено».Кто-нибудь знает, что стреляет дважды, если есть какие-либо данные?Спасибо.

1 Ответ

4 голосов
/ 25 января 2012

Привязка value при использовании с привязкой options пытается убедиться, что значение является допустимым параметром.

В вашем случае, похоже, 1405 не является правильным выбором.

Если вы используете версию до 2.0, то ваша проблема, вероятно, заключается в том, что вам нужно поменять местами порядок привязок значений / опций. До версии 2.0 сначала необходимо создать options для создания параметров, затем value может установить для нее действительный параметр

...