Knockout dependentObservable Firing两次

时间:2012-01-25 09:41:38

标签: knockout.js knockout-mapping-plugin

我正在使用Castle Monorail& NVelocity查看引擎。我有以下型号:

    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]);
    }
    );

select data-bind =“value:dto.referralReason,options:referralReasonOptions.Options,optionsText:'DisplayName',optionsValue:'Id'”>

如果dto.referralReason(或$ dto)为空,则sampleModel.showOtherReason将触发一次并警告Id。奇怪的是,如果$ dto不为空,则sampleModel.showOtherReason执行两次并且两个警报弹出,第一个警报显示'1405',这是正确的,但随后它会触发另一个“未定义”的警报。有没有人知道如果有任何数据它会发射两次?感谢。

1 个答案:

答案 0 :(得分:4)

value绑定与options绑定一起使用时会尝试确保该值是有效选项。

在您的情况下,看起来1405不是一个有效的选择。

如果您使用的是2.0之前的版本,则您的问题可能是您需要交换值/选项绑定的顺序。在2.0之前,options需要先构建选项,然后value可以将其设置为有效选项