実際にt-esc構文を使用してテンプレートからメソッドを呼び出すことはありません。あなたができることは、あなたのコントローラーに投稿を通してアクセス可能なメソッドを作成したり、リクエストを得ることです。タグでテンプレートにjavascriptファイルを含めたい場合は、javascriptを使用してテンプレートを使用してこれらの要求を行うことができます。スクリプトがシンプルである場合、あなたはおそらく
<script>console.log("Hello World")</script>
は、そうでなければ、あなたがこのような静的なディレクトリ内のjsファイルを指すことができますjavascriptのインラインで逃げることができました。
<script src="/<module>/static/main.js"></script>
Odooただし、jsを含めるためのいくつかのルールがあります。 Odwe CMSをQwebテンプレートの親テンプレートとして使用している場合、xpathを使用してjsファイルを残りのすべてのOdooのjsファイルに配置することもできます。あなたはjs.Here内POSTリクエストを使用する構文JSを必要と使用する必要があるとしてOdoo9もので
<template id="my_js" inherit_id="website.assets_frontend" name="My Js">
<xpath expr="script[last()]" position="after">
<script type="text/javascript" src="/<module>/static/main.js" />
</xpath>
</template>
は(おそらく)より複雑になるOdoo8で動作するはず単純化しすぎの例です。 Odoo9については、require jsを使用した他の例のコードを見てください。
ここにいくつかのコントローラメソッド、1つのjson、もう1つのhttpがあります。あなたのコードをあなたのために働かせます。より適切なもの(データのように)を返すこともできますが、成功または失敗を示すTrueまたはFalseで十分です。
@http.route('/test/json/method/', auth='none', type='json', website=True)
def test_json(self):
#YOUR CODE HERE
return json.dumps({'json':True})
@http.route('/test/http/method/', auth='none', type='http', website=True)
def test_http(self):
#YOUR CODE HERE
return json.dumps({'http':True})
上記の方法の1つ(簡単に説明)を使用してこのJavaScriptを配置し、テンプレート内のメソッドを呼び出します。
<script>
jQuery.get('/test/http/method/',function(data){ console.log("HTTP RESPONSE: " + data) });
</script>
<script>
jQuery.ajax({
type: "POST",
url: '/test/json/method/',
dataType: 'json',
async: true,
data: JSON.stringify({}),
contentType: "application/json; charset=utf-8",
success: function (data) {
console.log("JSON RESPONSE: " + JSON.stringify(data));
},
failure: function(data){
console.log(JSON.stringify(data));
}
})
</script>
Odooでのルーティングについては、多くのことを学ぶ必要があります。セキュリティ上の問題、許可の問題がありますので注意が必要です。
https://www.odoo.com/documentation/8.0/howtos/website.htmlでは、いくつかの概念の概要を説明しています。 https://www.odoo.com/documentation/8.0/reference/http.htmlではコントローラについて説明します。 https://www.odoo.com/documentation/8.0/reference/javascript.htmlはjavascriptをカバーしています。それ以外のWebサイト、コントローラのディレクトリにあるWebサイトのアドオンを参考にしてください。
インスタンスを用意する必要があります: 'someinstance.thisMethod()' –
コントローラクラスのオブジェクトを作成するにはどうしたらいいですか? – KbiR