0

我一直在为此绞尽脑汁,但我似乎无法让它发生。所以我有一个 asp.net 应用程序,当单击一个按钮时,使用 ckeditor 实例化一个对话框,然后它获取 ckeditor 的 textarea 内的数据并将其发布到同一页面上的讨论区,这一切都有效,但是问题是我想完全删除对话框,只是在页面加载时打开ckeditor而不等待“点击”。

请有人帮助我了解解决方案。

这是代码:

 function DiscussionViewModel() {
    var self = this;
    self.New = ko.mapping.fromJS(newDiscussion);
    self.Threads = ko.mapping.fromJS(threads, mapping);
    self.AddNewThread = function () {
        $("#dvAddDiscussion").dialog('open');
        ko.mapping.fromJS(newDiscussion, self.New);

        if (CKEDITOR.instances["txtDiscussioinDescription"] != undefined) {
            CKEDITOR.instances["txtDiscussioinDescription"].setData('');
        }
    };

然后这与对话框链接。

$(function () {
    $("#accordion").accordion();
    var dialog = $("#dvAddDiscussion").dialog({
        autoOpen: true,
        width: 720,
        height: 500,
        title: 'Discussion',
        modal: true,
        open: function () {
            if (typeof DISABLE_FOR_DIALOG != 'undefined')
                DISABLE_FOR_DIALOG = true;
            CKEDITOR.replace('txtDiscussioinDescription');

        },
        close: function (parameters) {
            if (typeof DISABLE_FOR_DIALOG != 'undefined')
                DISABLE_FOR_DIALOG = false;
            if (CKEDITOR.instances["txtDiscussioinDescription"] != undefined) {
                CKEDITOR.instances.txtDiscussioinDescription.updateElement();
                CKEDITOR.instances.txtDiscussioinDescription.destroy();
            }

        }
    });
    dialog.parent().appendTo($("#dvDialogs"));
    $("#frmAddDiscussion").data("validator").settings.submitHandler = discussionViewmodel.SubmitReply;
    $("#frmAddDiscussion").bind('click', function () {
        CKEDITOR.instances.txtDiscussioinDescription.updateElement();
    });
});

更新:按照 J 的要求添加 HTML。

@using System.Web.Script.Serialization

@model 列表

@{
    ViewBag.Title = "Threads";
    Layout = null;// "~/views/shared/_Layout.cshtml";
}
<div class="threads" id="dvThreads">
    <div class="thread">
        <a href="javascript:void(0)" data-bind="click: $parent.GetReplies.bind($data)">
        </a>
    </div>

    <a href="javascript:void(0)" data-bind="click: AddNewThread, text: 'Add New Discussion'" class="btn new"></a>

    <script type="text/html" id="tmplReply">


        <div class="detail">
            <div class="miniDesc">
                <span>by </span>
                <span data-bind="text: User"></span>
                <abbr class="timeago" data-bind="text: CreatedDate,attr:{title:CreatedDate}"></abbr>
                &nbsp;<a href="javascript:void(0)" data-bind="click: $root.EditReply.bind($data)" class="btnEdit">Edit</a>
            </div>
            <p data-bind="html: Description"> </p>

            <br class="clear" />
        </div>
    </script>
    <div id="dvDialogs">
        @Html.Partial("Add", Model[Model.Count - 1].New)
    </div>
</div>

<script type="text/javascript">
    var newDiscussion=@Html.Raw(new JavaScriptSerializer().Serialize(Model[Model.Count - 1].New));
    var type=@Html.Raw(new JavaScriptSerializer().Serialize(Model[Model.Count - 1].New.Type));
    var objectId=@Html.Raw(new JavaScriptSerializer().Serialize(Model[Model.Count - 1].New.TypeId));
    var threads=@Html.Raw(new JavaScriptSerializer().Serialize(Model));
    var addDiscussionUrl = '@Url.Action("Add","Discussion")';
    var threadsUrl  ='@Url.Action("ThreadsJson","Discussion")';
    var summariesUrl='@Url.Action("Summaries","Discussion")';
</script>
4

0 回答 0