Val*_*ris 7 javascript callback openerp openerp-8 odoo-8
我正在尝试修改web_tree_image小部件.我希望在悬停或点击时显示更大的图像,而不是仅在列中显示小图像.为了实现这一点,我试图通过覆盖start函数来渲染窗口小部件后添加回调,如文档中所述.
因此,我将以下代码添加到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 ...]
},
// [...]
});
};
Run Code Online (Sandbox Code Playgroud)
但是,start从不调用该函数,因此这不起作用.
我还没有完全理解通常会start被调用的代码路径,但似乎它在某种程度上是不同的web.list.Column.
应该start打电话给我,我做错了什么?或者在创建DOM元素之后还有另一种执行代码的方法吗?
Val*_*ris -1
虽然我仍然不知道为什么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);
// ...
},
// ...
});
};
Run Code Online (Sandbox Code Playgroud)
通过添加到超时为 0 的事件队列,可以推迟执行,直到创建了相关 DOM 元素,如此处所述。