summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js/core
diff options
context:
space:
mode:
Diffstat (limited to 'addons/web/static/src/js/core')
-rw-r--r--addons/web/static/src/js/core/mvc.js17
1 files changed, 12 insertions, 5 deletions
diff --git a/addons/web/static/src/js/core/mvc.js b/addons/web/static/src/js/core/mvc.js
index d7091cc4843..23f2b44b274 100644
--- a/addons/web/static/src/js/core/mvc.js
+++ b/addons/web/static/src/js/core/mvc.js
@@ -109,9 +109,11 @@ var Controller = Widget.extend({
* @param {Model} model
* @param {Renderer} renderer
* @param {Object} params
+ * @param {any} [params.handle=null]
*/
init: function (parent, model, renderer, params) {
this._super.apply(this, arguments);
+ this.handle = params.handle || null;
this.model = model;
this.renderer = renderer;
},
@@ -178,11 +180,13 @@ var Factory = Class.extend({
var self = this;
var model = this.getModel(parent);
return Promise.all([this._loadData(model), ajax.loadLibs(this)]).then(function (result) {
- var state = result[0];
+ const { state, handle } = result[0];
var renderer = self.getRenderer(parent, state);
var Controller = self.Controller || self.config.Controller;
+ const initialState = model.get(handle);
var controllerParams = _.extend({
- initialState: state,
+ initialState,
+ handle,
}, self.controllerParams);
var controller = new Controller(parent, model, renderer, controllerParams);
model.setParent(controller);
@@ -221,13 +225,16 @@ var Factory = Class.extend({
*
* @private
* @param {Model} model a Model instance
+ * @param {Object} [options={}]
+ * @param {boolean} [options.withSampleData=true]
* @returns {Promise<*>} a promise that resolves to the value returned by
* the get method from the model
* @todo: get rid of loadParams (use modelParams instead)
*/
- _loadData: function (model) {
- return model.load(this.loadParams).then(function () {
- return model.get.apply(model, arguments);
+ _loadData: function (model, options = {}) {
+ options.withSampleData = 'withSampleData' in options ? options.withSampleData : true;
+ return model.load(this.loadParams).then(function (handle) {
+ return { state: model.get(handle, options), handle };
});
},
});