我一直在为此绞尽脑汁,但我似乎无法让它发生。所以我有一个 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>
<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>