我创建了一个小部件,用于在看板视图中显示select
字段。我需要在更改select
字段中的值时更新字段值。
*。js
openerp.kanban_selection = function(instance){
var _t = instance.web._t,
_lt = instance.web._lt;
instance.web_kanban.kanbanSelection = instance.web_kanban.AbstractField.extend({
start: function() {
this.data = this.field.raw_value;
this.display_selection();
return this._super();
},
display_selection: function(){
var self = this;
console.log('inside selection');
var select = $("<select />").html(
$("<option />").val("monthly").html("Monthly")
).append(
$("<option />").val("yearly").html("Yearly")
).attr({
class: "duration_select"
});
self.$select = self.$el.append(select)
select.on("change", function(){
var l = $(this).find(":selected").text();
params = {'val':l}
new instance.web.Model("dashboard")
.call("getLocations", [this,l],{context: new instance.web.CompoundContext()})
.then(function(data) {
self.field_manager.set_values({test: data}).done(function() {
// here getting an error self.field_manager is undefined
});
console.log('data',data);
});
});
}
});
instance.web_kanban.fields_registry.add("kanbanSelection", "instance.web_kanban.kanbanSelection");
}
*。XML
<field name="duration" t-attf-graph_type='selection' widget='kanbanSelection'/>
<field name="test" />
*。PY
@api.one
def getLocations(self,durations):
print'durations',durations
data = dict(values="123")
return json.dumps(data)
我该怎么办?
答案 0 :(得分:0)
我不确定您是否可以通过看板小部件访问此内容。但是,我只是在表单视图小部件中做了类似的事情。对我有用的是这样的。
替换
self.field_manager.set_values({test: data}).done(function() {
console.log("DONE");
});
使用
self.view.fields.test.set_value(data);
我不确定此方法是否返回承诺。无论出于什么原因,我都没有选择做任何事情,如果存在的话。
但是,在获取getlocations
回调数据的地方,您可能希望记录自我对象并检查field_manager
是否可用。如果您对我的建议self.view.fields
有疑问,则可能需要遍历self
对象,以查看这些属性是否包含在self
中。
console.log(self);
如果你找不到field_manager
它可能只是通过不同的路径可用。