我正在尝试使用 Ajax 查询中的数据填充选择元素。我正在接收数据:
['And here's a comment on this Bookmark. ..., 250'], ['Wow, another comment. ..., 251'], ['Okay, it's just another comment. ..., 252']
...但我无法用数据填充实际的选择元素。到目前为止,我已经:
CKEDITOR.dialog.add( 'commentDialog', function( editor ) {
function get_bookmark_comments_as_object () {
var objBookmark = new Object({
items: []
});
objBookmark.id = 7193;
$.ajax({
url: base_url + "comments/jq_get_bookmark_comments_as_object/" + objBookmark.id,
contentType: "application/json; charset=utf-8",
dataType: "json",
cache: false,
async: false,
success: function (element) {
for (var i=0;i<element.length;i++) {
objBookmark.items.push("['" + element[i].comment_snippet + ", " + element[i].bookmark_comment_id + "']");
}
String.prototype.unquoted = function () { return this.replace (/(^")|("$)/g, '') }
var string = objBookmark.items.join(', ');
console.log(string);
return string.unquoted();
},
error: function () {
}
});
}
...
...和:
return {
// Basic properties of the dialog window: title, minimum size.
title: 'Comment Properties',
minWidth: 400,
minHeight: 200,
// Dialog window contents definition.
contents: [
{
// Definition of the Basic Settings dialog tab (page).
id: 'tab-basic',
label: 'Basic Settings',
// The tab contents.
elements: [
{
// Text input field for the abbreviation text.
type: 'select',
id: 'comment',
label: 'Select a Comment',
items: [['Select a Comment', 0]].concat( get_bookmark_comments_as_object() ),
setup: function( element ) {
this.setValue( element.getText() );
},
commit: function( element ) {
...
}
}
]
}
],
正如您从 get_bookmark_comments_as_object()
函数中看到的,我返回了精确格式的字符串。
任何返回普通数组或字符串的尝试都会使 select 元素表现得很奇怪(例如,字符串周围的双引号会导致 CKEditor 将整个字符串拆分为字符部分)。然而,当我从 console.log()
结果复制并粘贴时,它起作用了。
我已经尝试了 items: ...
的多种变体,但没有可用的结果。
我尝试将 jQuery/Ajax 代码放入 setup: ...
和 commit: ...
中,但没有可用的结果。
我也尝试过 fix from a similar thread ,但这也没有任何作用。
我已经尽力了,剩下的对我来说还是个谜。
更新
经过一番研究后,我发现:
var items = [['And here's a comment on this Bookmark. ...', '250'], ['Wow, another comment. ...', '251'], ['Okay, it's just another comment. ...', '252']];
...有效,但是:
var items = get_bookmark_comments_as_object();
...不会,即使字符串是相同的。
因此,无论出于何种原因,CKEditor(或者,我认为是 JavaScript)都被我不知道是什么所窒息。
最佳答案
以下是我在这种情况下在 CKEDITOR 小部件对话框中所做的操作。
id: 'modelStudentCaseVariable',
type: 'select',
label: 'Student Case',
items: [
[ editor.lang.common.notSet, '' ]
],
onLoad: function (widget) {
var selectList = this;
var url = $("#studentCaseVarsUrl").val();
$.getJSON(url, function(data) {
$.each(data, function(key, val) {
selectList.add(key, val);
});
});
},
关于jquery - CK编辑器4 : add dynamic select element in plugin dialog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24840935/