我正在编写一个Odoo v9小部件,它根据数据库中的设置和实际的表单字段呈现URL。
我认为数据库中的设置应该存在于ir_config_parameter中。我在我的模块中插入默认值。
在渲染窗口小部件时获取此值的最佳方法是什么?使用
执行异步ajax调用新模型(" ir.config_parameter")
看起来有点沉重。有没有更好的方法来做到这一点?
感谢。
小工具代码:
var UrlWidget2 = form_common.FormWidget.extend({
start: function() {
this._super();
this.field_manager.on("field_changed:ref", this, this.display_result);
this.display_result();
},
display_result: function() {
var ref = this.field_manager.get_field_value("ref");
if (!ref) return;
var baseUrl = 'https://example.com'; //this is the value I want to get from the setting in the database.
var url = baseUrl + '/foo/' + ref;
this.$el.html('<a href="' + url + '" target="portal">View Externally</a><br /><br/>');
}
});
答案 0 :(得分:0)
您可以使用RPC。这是适合我的例子:
var Model = require('web.DataModel');
var UrlWidget2 = form_common.FormWidget.extend({
// just example how to get parameter from backend
display_result: function() {
var parameter = new Model('ir.config_parameter');
// get fields value, key
parameter.query(['value', 'key'])
// criteria of search - record with id = 1
.filter([['id', '=', 1]])
// only one record
.limit(1)
.all()
.then(function (parameter) {
// here data from server
console.log(parameter);
});
// ...
}
});
希望这会对你有所帮助。