我使用的是Javascript Ace文本编辑器,需要将关键字加载到(DynHighlightRules)中,以突出显示导入的关键字。我在
中使用静态关键字进行了突出显示editor.getSession()。setMode( “ACE /模式/ highlightRules”)
,但我需要在渲染编辑器后导入新规则。我找到了一个很好的解决方案,它在Apache服务器中完美运行,但在Web.py python服务器中却没有。我相信这是因为模板页面不在服务器的根级别。有人在Webpy中部署了Ace编辑器并解决了这个问题吗?
答案 0 :(得分:0)
好的,我找到了解决问题的方法。这是一个解决方案,而不是我最初解决问题的方式。我的第一次尝试是在" ace.define"中嵌入一个ajax调用。功能,但它不会正确处理它,部分将丢失导致错误。然后我尝试动态导入关键字,但无法在python环境中使其工作。最后我想把整个事情包裹在ajax调用的成功中,现在它完全正确。我想当嵌入在ace函数中时,ajax事件和定义的其他部分之间的时间不同步。
所以答案就是将整个定义包装在ajax成功回调中。
$.ajax({
url: "/readUserCreatedKeywords",
type: "POST",
success: function(response){
var keywordsString = "";
var tmpArr = response.split(",");
var tmpArrLen = tmpArr.length;
var s = 0;
var halfNum = 0;
while (s < tmpArrLen) { // Clean array and save keywords and args into respective arrays
halfNum = parseInt(s/2);
tmpArr[s] = tmpArr[s].replace("u'", "").replace("[", "").replace("'", "").replace("(u", "").replace(")", "").replace("]", "").replace("(", "").replace(" ", "");
if (s % 2 == 0){ //Store even values in keywords
keywordsString += tmpArr[s] + "|";
//console.log("tmpArr[" + s + "]" + tmpArr[s]);
}
s++;
}
ace.define("ace/mode/python_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) {
...............................................lots of code..........................................
exports.Mode = Mode;
});
}
});