在我的程序中,我使用 Froala 富文本编辑器编写一些文本,放置一些图像等。出于某些特定原因,我创建了一个带有 ko.observable 绑定的标签,然后我将所有内容提交给 Drupal,使用之前的绑定擦除标签提交。在我可以再次从 Drupal 获取此信息之后(不再带有此绑定的标记)。因此,为了再次编辑此信息,我再次创建了相同的绑定。但是,这一次该绑定不再起作用。我在下面简化了我的所有 javascript 代码:
$(document).ready(function() {
function create_image_table() {
if (!document.getElementById("img_div0"))
$('<div id="img_div0" style="border : 1px solid black; width=80%" class="asd row"/>').appendTo(document.getElementsByClassName("fr-element fr-view")[0]);
$('<div id="ilk0" class="my_ilk col-sm-6" contenteditable="false"/>').append($('<div id="caption0" style="font-weight:normal; height: 50px;" data-bind="text: captionName0" data-toggle="modal" data-target="#myModal" class="caption_class" contenteditable="false"/>')).appendTo($("#img_div0"));
}
function create_image_observables(){
myViewModel['captionName0'] = ko.observable('CAPTION : ');
ko.applyBindings(myViewModel,document.getElementById('caption0'));
}
var myViewModel = {
edit_fields : function() {
this.captionName0('CAPTION : ' + document.getElementById('caption_input').value);
}
};
ko.applyBindings(myViewModel);
document.getElementById("editor_content_button").addEventListener("click", submit);
var images = document.getElementsByClassName("asd row");
for (j=0;j<images.length;j++) {
create_image_table(0, "");
create_image_observables(0, "","","","","");
}
function submit () {
create_image_table(0, "");
create_image_observables(0, "", "", "", "", "");
var content_to_send = document.getElementById("img_div0").parentNode.innerHTML.replace(/</g,"<");
$.ajax({
type: "POST",
dataType: 'json',
data: {mycontent: content_to_send, title: "", author: "" },
url: "submit_2.php",
success: function(response) {
if(response > 0) {
window.location = ($(this).attr('href') + 'rte_2.php?id='+response).replace("undefined","") ;
}
}
});
}
$(function() {
$('div#froala-editor').froalaEditor({toolbarButtons: ['undo', 'redo' , '|', 'bold', 'italic', 'underline', '|' ,'fullscreen', 'inlineStyle', '|', 'insertLink', 'paragraphFormat','|', 'insert','insertHTML'],})
});
});
在 submit_2.php 中为了删除这些标签,我使用:
$tags= $xpath->query('//div[contains(@id,"ilk")]');
foreach ($tags as $tag) {
$tag->parentNode->removeChild($tag);
}
然后,我从 Drupal 获取所有信息并以与以前相同的格式再次显示它们(我再次添加带有绑定的标签)。但是绑定失去了它的可观察特性。
我还尝试在提交函数中使用 cleanNode 和 removeNode 函数,而不是在 submit_2.php 中删除它,但是,我再次得到了相同的结果。我怎么解决这个问题?提前致谢。