2016-12-21 5 views
0

かんばんの表示でselectフィールドを表示するウィジェットを作成しました。 selectフィールドの値を変更しながらフィールド値を更新する必要があります。JSのフィールド値を更新

*は、.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

かんばんウィジェットからアクセスできるかどうかわかりません。しかし、私はちょうどフォームビューウィジェットで同様のことをしました。私のために働いたのは、このようなものでした。このメソッドは約束を返すかどう

私はわからない

self.view.fields.test.set_value(data); 

self.field_manager.set_values({test: data}).done(function() { 
    console.log("DONE"); 
}); 

を交換してください。私は、何らかの理由で、もしも存在すれば、約束をもって何かをすることを選択しなかったからです。

しかし、getlocationsコールバックデータを取得する場所では、自己オブジェクトをログに記録して、field_managerが利用可能かどうかを確認することができます。 self.view.fieldsで問題が発生した場合は、selfオブジェクトをトラバースして、これらの属性がselfの内部に含まれているかどうかを確認する必要があります。

console.log(self); 

field_managerが見つからない場合は、別のパスから利用できる可能性があります。

関連する問題