接口名称: web_search_read
请求路径: /web/dataset/call_kw/project.project/web_search_read
内容主题: 请求参数kwargs中fields的来源分析
以list类型为例
1 先转成archInfo对象,其中有activeFileds属性
/* web/static/src/views/list/list_view.js */
export const listView = {
..
ArchParser: ListArchParser,
..
props: (genericProps, view) => {
const { ArchParser } = view;
const { arch, relatedModels, resModel } = genericProps;
const archInfo = new ArchParser().parse(arch, relatedModels, resModel);
..
},
};
2 中间经过N层调用,过于复杂不便展示~~~
3 activeFields属性,传到params对象中,最后再转成this.filedNames
/* web/static/src/views/relational_model.js */
class DataPoint {
constructor(model, params = {}, state = {}) {
..
this.setActiveFields(params.activeFields);
..
}
..
get fieldNames() {
return Object.keys(this.activeFields);
}
..
/**
* @param {Object} [activeFields={}]
*/
setActiveFields(activeFields) {
this.activeFields = activeFields || {};
}
}
class DynamicList extends DataPoint {
..
}
export class DynamicRecordList extends DynamicList {
..
/**
* @returns {Promise<Record[]>}
*/
async _loadRecords() {
..
const { records: rawRecords, length } =
this.data ||
(await this.model.orm.webSearchRead(
this.resModel,
this.domain,
this.fieldNames,
kwargs
));
..
}
..
}