diff --git a/addons/web/static/src/js/views/basic/basic_model.js b/addons/web/static/src/js/views/basic/basic_model.js index 42731bcf83b..64030cea866 100644 --- a/addons/web/static/src/js/views/basic/basic_model.js +++ b/addons/web/static/src/js/views/basic/basic_model.js @@ -360,6 +360,13 @@ var BasicModel = AbstractModel.extend({ if (this.isNew(element.id)) { delete element.res_id; } + var evalContext; + Object.defineProperty(element, 'evalContext', { + get: function () { + evalContext = evalContext || self._getEvalContext(record); + return evalContext; + }, + }); } if (element.type === 'list') { // apply changes if any diff --git a/addons/web/static/src/js/views/basic/basic_renderer.js b/addons/web/static/src/js/views/basic/basic_renderer.js index 25ba02530be..3f0c67c7e70 100644 --- a/addons/web/static/src/js/views/basic/basic_renderer.js +++ b/addons/web/static/src/js/views/basic/basic_renderer.js @@ -282,7 +282,7 @@ var BasicRenderer = AbstractRenderer.extend({ * @param {Object} record */ _computeModifiers: function (modifiersData, record) { - var evalContext = record.getEvalContext(); + var evalContext = record.evalContext; modifiersData.evaluatedModifiers[record.id] = _.mapObject(modifiersData.modifiers, function (modifier) { return new Domain(modifier, evalContext).compute(evalContext); diff --git a/addons/web/static/src/js/views/kanban/kanban_record.js b/addons/web/static/src/js/views/kanban/kanban_record.js index c22a10ce6e6..59922c4b005 100644 --- a/addons/web/static/src/js/views/kanban/kanban_record.js +++ b/addons/web/static/src/js/views/kanban/kanban_record.js @@ -90,7 +90,7 @@ var KanbanRecord = Widget.extend({ * @returns {boolean} the domain evaluted with the current values */ _computeDomain: function (d) { - return new Domain(d).compute(this.state.getEvalContext()); + return new Domain(d).compute(this.state.evalContext); }, /** * Generates the color classname from a given variable