Представление второй формы с помощью Jquery UI Dialog и KnockoutJS - PullRequest
0 голосов
/ 27 мая 2011

У меня есть первичная форма, определенная и хорошо продуманная, она делает то, что должна ...

@{ Html.BeginForm(); }
@Html.ValidationSummary(false)
@Html.AntiForgeryToken()
@Html.EditorFor(model => model)
<h2>Properties</h2>
<hr />
@* I want to put some stuff here... *@
<br class="space" />
<div class="clearfix">>
    <button type="submit" data-bind="click: save">
        Save
    </button>
</div>
@{ Html.EndForm(); }

Теперь, тогда. К этой модели (или, скорее, ViewModel) прикреплен IList<PropertyViewModel>.

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

Я использую KnockoutJS для моей согласованности viewModel. Хотя я полагаю, это довольно неуместно. Я хочу отобразить вторую форму в jQuery UI Dialog и вернуть результат, по существу ..

<script type="text/javascript">
    var viewModel = {
        name: ko.observable(),
        description: ko.observable(),
        properties: ko.observableArray(),

        save: function () {
            alert(ko.toJSON(viewModel));
        },

        includeProperty: function () {
            $("#dialog").dialog({
                width: 500,
                closeText: '',
                resizable: true,
                buttons: {
                    'Submit': function () {
                        $(this).dialog('close');
                        callback( @* I want the new data to get sent back *@ );
                    },
                    'Cancel': function () {
                        $(this).dialog('close');
                        return false;
                    }
                }
            });
        }
    };
    function callback(value) {
        alert(ko.toJSON(value)); // (I will push the new property to the viewmodel here)
    }
    ko.applyBindings(viewModel);
</script>

Однако я не совсем уверен, как на самом деле вставить EditorTemplate в диалог, более того, я не уверен, как извлечь из него данные.

1 Ответ

1 голос
/ 27 мая 2011

Я не совсем понимаю ваш вопрос, но из того, что я понял, вы пытаетесь передать данные в диалоговое окно и получить данные из диалогового окна. Если это так, то это может быть полезно:

http://api.jquery.com/jQuery.data/

Вот подробный пример использования:

Передача данных в диалоговое окно jQuery UI

...