来自Many2one的Odoo PoS下拉菜单(widget.pos?)

Odoo PoS dropdown from Many2one (widget.pos?)

本文关键字:widget pos 下拉菜单 Many2one Odoo PoS 来自      更新时间:2023-09-26

我想将我创建的 Many2one 的下拉列表添加到 pos.xml 文件中(我知道如何从中继承(,有人可以帮助我吗?

我在代码中看到,对于每个下拉列表,他们都使用了widget.pos。名字,但我似乎在任何地方都找不到它。这是国家/地区的示例(这里我想用我的变量替换它(。

                <select class='detail client-address-country' name='country_id'>
                    <option value=''>None</option>
                    <t t-foreach='widget.pos.countries' t-as='country'>
                        <option t-att-value='country.id' t-att-selected="partner_country_id ? ((country.id === partner.country_id[0]) ? true : undefined) : undefined"> 
                            <t t-esc='country.name'/>
                        </option>
                    </t>
               </select>

我不知道t-foreach='widget.pos.countries'来自哪里,以及我如何为我自己的名为"domain"的变量管理它,该变量是类"域名"的一部分。并从res.partner的Many2one打来电话

你的问题:我在代码中看到,对于他们使用的每个下拉列表 widget.pos.name,但我似乎在任何地方都找不到它。

答:widget.pos.name 来自 在POS,模型.js行号:130.,此处加载服务器端模型。这是需要从服务器加载的模型的列表。在自定义模块中,您还可以根据需要加载其他模型。

Que:我不知道t-foreach='widget.pos.countries'从何而来,以及我如何为自己的变量管理它?

答:对于国家/地区小部件,它来自模型.js行号:178模型:'res.country'从服务器加载。在第 180 行:您可以看到在加载函数中他们定义了 country(loaded: function(self,countries((//您可以在此处给出任何命名约定。因此,您可以直接在 (Many2One 字段( xml 文件中传递该函数参数

例:在自定义模块的JS文件中写入:

    module.PosModel.prototype.models.push({ //loaded model
    model:  'res.partner',
        fields: ['partner_id','name'],
        loaded: function(self,partners){ //pass parameters
        self.partners = partners;
    },
});

在 XML 文件中:

       <div class='client-detail'>
        <span class='label'>Partner</span>
            <select class='detail client-partner' name='partner_id'>
                 <option value=''>None</option>
                    <t t-foreach='widget.pos.partners' t-as='partner'>
                      <option t-att-value='partner.id' t-att-selected="partner_partner_id ? ((partner.id === partner.partner_id) ? true : undefined) : undefined">
                       <t t-esc='partner.name'/>
                   </option>
                  </t>
              </select>
    </div>

所以,就像这样:在你的js中,你可以在这里加载任何模型,并在XML文件中获取数据。希望这对你有帮助..!!谢谢。。。!!!