2

Castle Monorail&NVelocityViewEngineを使用しています。私は次のモデルを持っています:

    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が1回起動し、IDを警告します。奇妙なことに、$ dtoが空でない場合、sampleModel.showOtherReasonが2回実行され、2つのアラートがポップアップします。最初のアラートは正しい「1405」を示しますが、その後、「未定義」の別のアラートを発生させます。データがある場合、誰かがそれが2回発火していることを知っていますか?ありがとう。

4

1 に答える 1

4

valueバインディングをバインディングとともに使用するoptionsと、値が有効なオプションであることを確認しようとします。

あなたの場合、1405は有効な選択ではないようです。

2.0より前のバージョンを使用している場合は、値/オプションのバインディングの順序を入れ替える必要がある可能性があります。2.0より前では、options最初にオプションを作成しvalueてから、有効なオプションに設定する必要があります

于 2012-01-25T15:51:43.683 に答える