2017-02-20 2 views
1

Odoo 8のフォームビューのボタンからクライアントサイドのJavaScriptを実行する必要があります。このボタンは、この辞書を返すPythonメソッドを実行します。Odoo 8で新しい(空白の)ビューをロードせずにクライアントサイドのJavaScriptを実行する

次のように
{"type": "ir.actions.client", 
"tag": "my_module.do_something",} 

do_somethingが.jsファイルに定義されています。

openerp.my_module = function (instance) { 
    instance.web.client_actions.add("my_module.do_something", "instance.my_module.Action"); 
    instance.my_module.Action = instance.web.Widget.extend({ 
     init: function() { 
      // Do a lot of nice things here 
     }  
    }); 
}; 

を今、ジャバスクリプトがロードされ、適切に実行されますが、でも、init関数を起動する前に、Odooは、ブランドの新しい、空白のビューがロードされます、そして一度javascriptが終わったら私は他のメニューエントリをブラウズすることができません。実際には、どこに私はこのエラーを取得するクリック:

Uncaught TypeError: Cannot read property 'callbackList' of undefined 

私が代わりに必要なもの、新しいビューをロードせずに、ボタンが属するフォームビューからJavaScriptを実行することですので、両方のjavascriptのものが行わ取得し、すべてのコールバックと環境全体が良好な状態になります。私の直感は、init関数をオーバーライドすべきではないということです(あるいは、すべてが壊れている、私はOdooのクライアント側のjsにはかなり新しい)が、私はdocを見つけることができませんでした。私は欲しい。それを得るための任意のアイデア?

答えて

1

申し訳ありませんが、私は多くの時間以来、V8上では動作しませんし、私はそれを追加する方法を覚えていないが、これはあなたを助けるかもしれない:https://github.com/odoo/odoo/blob/8.0/doc/howtos/web.rst

プラス、あなたはV8のコードベースにあなたを検索した場合ポインタへhttps://github.com/odoo/odoo/search?utf8=%E2%9C%93&q=instance.web.client_actions.add

+0

ありがとうございましたsimahawk、あなたは私の一日を作った! githubの検索へのリンクには、私が必要としていたことの多くの例があり、私の機能を修正することができました。名誉! – warp10

0

おかげで別の答えに掲載simahawk webモジュールのドキュメント内のクライアントのアクションのいくつかの発生を見つけることができます、私は今、私が必要な正確に何やっている私のjsファイルを、修正することができました。参考までに、コードは次のとおりです。

openerp.my_module = function (instance) { 
    instance.web.client_actions.add("my_module.do_something", "instance.my_module.action"); 
    instance.my_module.action = function (parent, action) { 
     // Do a lot of nice things here 
    } 
}; 
関連する問題