从 odoo 模板的脚本标签中的 javascript dict 获取值

Posted

技术标签:

【中文标题】从 odoo 模板的脚本标签中的 javascript dict 获取值【英文标题】:Get value from javascript dict in odoo template's script tag 【发布时间】:2021-12-19 13:38:28 【问题描述】:

我需要获取elt.innerhtml 的值并将其传递给fromPage[j].textContent

从GitHub借用的函数。

目前vars['hiddenNumber'] 正在返回undefined

elt.style.visibility = "hidden"; 按预期工作。

我相信这可能与变量范围有关,但似乎找不到创建全局变量的方法。尝试更新window.value,但出现未定义窗口的错误。

使用 odoo 13,wkhtmltopdf 0.12.5。

<script>
    function subst() 
        var vars = ;
        var x = document.location.search.substring(1).split('&amp;');
        for (var i in x) 
            var z = x[i].split('=', 2);
            vars[z[0]] = unescape(z[1]);
        
        var index = vars['webpage'].split('.', 4)[3]

         var operations = 
                    // other operations
             'hidden_page_number': function (elt) 
                 elt.style.visibility = "hidden";
                 vars['hiddenNumber'] = elt.innerHTML;  // This value
             ,
         ;

         for (var klass in operations) 
             var y = document.getElementsByClassName(klass);
             for (var j=0; j&lt;y.length; ++j)
             operations[klass](y[j]);
         

         var fromPage = document.getElementsByClassName('page');
         for(var j = 0; j&lt;fromPage.length; j++)
         fromPage[j].textContent = vars['hiddenNumber'];  // Required here

         var toPage = document.getElementsByClassName('topage');
         for(var j = 0; j&lt;toPage.length; j++)
         toPage[j].textContent = vars.sitepages;
 
</script>

【问题讨论】:

【参考方案1】:

只是一个建议:您在闭包之外定义vars,然后在尝试更新vars 的位置定义闭包,但我认为在闭包内部它为vars 创建了新范围,这就是vars 未更新的原因外面

【讨论】:

您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。

以上是关于从 odoo 模板的脚本标签中的 javascript dict 获取值的主要内容,如果未能解决你的问题,请参考以下文章

(21)odoo中的QWeb模板引擎

更新:Odoo项目任务标签域

如何从 bash 脚本中停用 virtualenv

An odoo功能介绍(13) 公司如何定义销售的订阅产品

如何从APPIUM中的脚本滚动列表

从odoo中的日期计算Odoo Days?