[英]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 表達式運行{{ 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.