我在同一页面上有几个活动的ACE编辑器,每个编辑器都应该触发一个"关于变化";事件
editor[iGr].getSession().on('change', function(e) {
// e contains the change type and data
some_code...;
});
我如何知道在回调函数中是哪个编辑器触发了它?传统的";e";发送到回调的对象只有关于数据更改本身的信息,而没有关于编辑器本身的信息。而";这个";在我的情况下,对象不是信息性的(包含本机代码的未命名函数的数组)。
实际上,我可以自己回答这个问题:"e"是触发更改事件时的事件对象。我发现我可以使用编写回调函数的上下文。这是基本的Javascript:如果声明了一个变量(即编辑器的编号),它将在回调函数中显示。。。
您可以向处理程序函数传递两个参数,第二个是编辑器实例。
editor1.on("change", function(e, ins) {
ins.setValue("HELLO on Editor 1", -1);
});
editor2.on("change", function(e, ins) {
ins.setValue("HELLO on Editor 2", -1);
});