我正在尝试修改 web_tree_image
小部件。我不希望在列中显示小图像,而是希望在悬停或单击时显示更大的图像。为了实现这一点,我试图在小部件呈现后添加回调,方法是覆盖 start
函数,如 the documentation 中所述。 .
因此我将以下代码添加到 web_tree_image.js :
openerp.web_tree_image = function (instance) {
instance.web.list.Image = instance.web.list.Column.extend({
// [...]
start: function() {
console.log("start called");
// [... add callbacks ...]
},
// [...]
});
};
但是,start
函数从未被调用,所以这不起作用。
我还没有完全理解通常导致 start
被调用的代码路径,但它似乎与 web.list.Column
有所不同。
是否应该调用 start
而我做错了什么?或者在创建 DOM 元素后是否有另一种执行代码的方法?
最佳答案
虽然我仍然不知道为什么没有调用 start
函数,但这是一个解决方法:
openerp.web_tree_image = function (instance) {
instance.web.list.Image = instance.web.list.Column.extend({
// ...
format: function (row_data, options) {
// ...
window.setTimeout(function() {
console.log("DOM ready");
// ... add callbacks ...
}, 0);
// ...
},
// ...
});
};
通过将超时时间为 0 的事件队列添加到事件队列中,可以推迟执行,直到相关的 DOM 元素已按照说明创建完毕 here .
关于javascript - 向在 web.list.Column 的子类中创建的 DOM 元素添加回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33521425/