4

Durandal テンプレートを使用して asp.net ソリューションを開発しています。

モーダル ダイアログを使用してテーブル内の要素を選択し、選択した要素をメイン ビューモデルに戻したいと考えています。

これが私がこれまでに持っているものです:

(changer)メイン ビューには、モーダル ダイアログを開くためのリンクがあります。

ここに画像の説明を入力

リンクがクリックされたときに呼び出されるビューモデルの関数は次のとおりです。

var changeSender = function (item) {
    app.showModal('viewmodels/sender');
};

というダイアログを開きsenderます。

以下はのviewModelですsender

define(function (require) {

    var system = require('durandal/system'),
        datacontext = require('services/datacontext');

    var senders = ko.observableArray();

    var activate = function () {
        return datacontext.getSenders(senders);
    };

    var buttonOk = function (dialogResult) {
        this.modal.close(dialogResult);
    }

    var buttonCancel = function () {
        this.modal.close();
    }

    var vm = {
        activate: activate,
        senders: senders,
        buttonOk: buttonOk,
        buttonCancel: buttonCancel
    };

    return vm;
});

以下は、「送信者」のビューです。

<div class="messageBox autoclose" style="max-width: 500px">
    <div class="modal-header">
        <h3>Expéditeur</h3>
    </div>
    <div class="modal-body">
          <table class="">
            <thead>
                <tr>
                    <th></th>
                    <th>Name</th>
                    <th>Street</th>
                    <th>City</th>
                </tr>
            </thead>

            <tbody data-bind="foreach: senders">
                <tr data-bind="attr: {'data_id':id}">
                    <td><input type="radio" name="isSelected" data-bind="checked: isSelected" /></td>
                    <td data-bind="text: name"></td>
                    <td data-bind="text: street"></td>
                    <td data-bind="text: city"></td>
                </tr>
            </tbody>
        </table>
    </div>
    <div class="modal-footer">
        <button class="btn btn-primary" data-bind="click: buttonOk">Ok</button>
        <button class="btn" data-bind="click: buttonCancel">Cancel</button>
    </div>
</div>

ここに画像の説明を入力

私の問題は、選択したラジオ ボタンを特定してメイン ビューに戻す方法がわからないことです。

どんな助けでも大歓迎です。

ありがとう。

4

1 に答える 1

7

必要なものは何でも dialogResult オブジェクトに追加するか、完全に置き換えることができます。

var buttonOk = function (dialogResult) {
    dialogResult.checkedValue = 'Cogema';
    this.modal.close(dialogResult);
}

次に、次のように、メイン ビュー モデルのダイアログから結果にアクセスできます。

var changeSender = function (item) {
    app.showModal('viewmodels/sender').then(function(dialogResult){
        // use dialogResult.checkedValue here
    });
};
于 2013-04-03T16:29:48.490 に答える