使用Jquery UI Dialog和KnockoutJS呈现第二种形式

问题描述

|| 我定义了一个主表格,布局很好,它可以完成所需的工作...
@{ 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>
Propertyviewmodel
有自己的一组验证。目前,它们非常简单,但是以后有可能会对此设置进行更复杂的使用。 我使用ѭ3来保持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>
但是,我不确定如何将“ 6”真正放入对话框中,而且我不确定如何从中取出数据。     

解决方法

        我不完全理解您的问题,但是据我了解,您试图做的是将数据传递到对话框并从对话框中检索数据。在这种情况下,这可能会很有用: http://api.jquery.com/jQuery.data/ 这是有关如何使用的详细示例: 将数据传递到jQuery UI对话框