如何在WSO2 GREG的商店中显示属性表?

时间:2016-08-24 16:55:32

标签: wso2 wso2greg

我在soap服务工件中添加了一个新属性,用于存储服务的无限制操作(类似于联系人或端点表)

我的问题是如何在商店中显示该属性表?

我尝试使用像资产这样的新属性

来编辑asset-attributes.hbs
<div class="es-col-lg-12 col-lg-12">
    <h4>{{t "Operaciones del Servicio Web"}}</h4><hr>


    {{#each this.attributes.operaciones_nombre }}


    <div class="es-col-lg-12 col-lg-12 divrow">
        <div class="col-lg-2"><b>{{t "Nombre"}} :</b></div>
        <div class="col-lg-10">{{ this.attributes.operaciones_nombre}}</div>
    </div>

    {{/each}}

但问题是,当它在 #each 内部时,它不显示 this.attributes.operaciones_nombre ,即使我使用 this.attributes。 operaciones_nombre。[0] 仅显示第一个元素

为什么循环只适用于 {{#each this.attributes.operaciones_nombre}} 而不是 {{#each this.attributes.operaciones}} ?我是否需要在asset.js中定义它以及我是如何做到的?

1 个答案:

答案 0 :(得分:1)

联系人使用此功能。我在下面的代码中测试了restservice,它的工作正常。对于端点和您的情况,您可以使用相同的。

在相关的 asset.js 中添加 asset.renderer

asset.renderer = function (ctx) {
    return {
        pageDecorators: {
            jsonFormatter: function (page) {
                if (page.meta.pageName === 'details') {
                    var contacts = page.assets.attributes.contacts_entry;
                    if (contacts) {
                        var contacts_entry = [];
                        if (contacts.constructor === Array) {
                            for (var index in contacts) {
                                var contact = contacts[index].split(':');
                                var contact_entry = {};
                                contact_entry.name = contact[0];
                                contact_entry.value = contact[1];
                                contacts_entry.push(contact_entry);
                            }
                        } else {
                            var contact = contacts.split(':');
                            var contact_entry = {};
                            contact_entry.name = contact[0];
                            contact_entry.value = contact[1];
                            contacts_entry.push(contact_entry);
                        }
                        page.assets.attributes.contacts_entry = contacts_entry;
                    }
                }
            }
        }
    };
};

注意:如果此处已经定义了pageDecorators,请使用逗号分隔这些方法并添加上述方法。

asset-attributes.hbs 中添加以下行

<div class="col-lg-12">
        <h4>Contacts</h4><hr>
        <div class="col-lg-12 table table-striped table-hover divrow">
            {{#each attributes.contacts_entry}}
            <div class="col-lg-2">{{name}}</div>
            <div class="col-lg-10">{{value}}</div>
            {{/each}}
        </div>
    </div>

注意:在资产扩展中,您需要 asset-attributes.hbs (/ {GREG_HOME} / repository / deployment / server / jaggeryapps / store / extensions / assets / {SHORTNAME} / themes /store/partials/asset-attributes.hbs)文件覆盖位于 greg-store-defaults 中的默认文件。

请查看发布商和商店的示例屏幕截图

<强>发布商

Pub view

商品

store view

注意:存在一些对齐问题。 CSS /引导! ;)

请参阅this blog post

注意:下次请为相关属性添加rxt定义。