簡體   English   中英

如何將 JS 變量值設置為 Odoo qweb 模板變量值

[英]How to set JS variable value into an Odoo qweb template variable value

我需要將 JS 變量值設置為 Odoo 模板變量值。

例如, select_val 值:

<script>
$(document).ready(function() {
 var button = $('#select_coas_report_sign');
 button.change(function() {
  select_val = $(this).val();
 });
});
</script>

我需要設置到下一個變量值:

<t t-set="my_var" t-value="select_val" />

另外,我需要將此變量設置為模板中的 function 調用,但給了我服務器錯誤。

<t t-set="callUrl"
t-value="sale_order.get_portal_url(suffix='/accept_order/' + {{ my_var }})" />

在此處輸入圖像描述 任何想法? 謝謝閱讀!

您正在將多種類型的渲染 odoo 模板混合到無法工作的東西中。

您的 javascript <script>標簽在服務器渲染模板后執行,因此如果您重新渲染原始頁面,它只能在服務器端設置變量。 通常這是通過創建一個<form>並通過<input>將數據傳遞到 controller 來完成的。 controller 然后使用來自輸入的變量值呈現模板。

您看到的錯誤TypeError: unhashable type: 'set'是因為:

  • 在執行<t t-set="callUrl" t-value="sale_order.get_portal_url(suffix='/accept_order/' + {{ my_var }})" />時,t-value 中的字符串作為 python 表達式運行
  • python 表達式{{ my_var }}給你錯誤TypeError: unhashable type: 'set'

要修復錯誤,您可以將 callUrl 設置更改為:

<t t-set="callUrl" t-value="sale_order.get_portal_url(suffix='/accept_order/' + my_var )" />提示: {{var}}僅在t-attf-$name內部使用

為了防止來自 my_var 的錯誤可能是 None ( TypeError: must be str, not NoneType ),您可以使用 python 字符串格式:

<t t-set="callUrl" t-value="sale_order.get_portal_url(suffix='/accept_order/%s' % (my_var or '') )" />

作為發布表單的替代方法,如果您不需要服務器端變量,則可以在 javascript 中呈現模板。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM