Доступ к данным в руле.JS шаблон

У меня есть следующий набор данных JSON, и я хотел бы повторить usersи отобразить ссылку для каждого из appsних, к которым они могут получить доступ. Я успешно провел итерацию по массиву пользователей и отобразил имя каждого приложения из массива приложений, содержащихся каждым пользователем. Однако я не знаю, как искать url-адрес приложения из массива приложений. Это можно сделать в пределах руля.шаблон js?

    { "config": {
        "users":
        [
            {
                "name": "Bob Jones",
                "title": "Developer",
                "apps": ["app1","app2","app4"]           
            },
            {
                "name": "Brad Willis",
                "title": "Manager",
                "apps": ["app2","app4"]       
            }
        ],
        "apps":
        [
            {
                "name": "app1",
                "url": "http://host/app1"
            },
            {
                "name": "app1",
                "url": "http://host/app1"
            },
            {
                "name": "app1",
                "url": "http://host/app1"
            },
            {
                "name": "app1",
                "url": "http://host/app1"
            }
        ] 
    }
}

Вот шаблон, который я в настоящее время использую для отображения пользователей и приложений:

{{#each config.users}}
    <div class="user-panel">
        <div class="user-panel-name">{{this.name}}</div>
        <div class="user-panel-title">{{this.title}}</div>
        <div class="user-panel-apps">                          
            {{#each this.apps}}
                <a class="btn btn-success btn-sm" onclick="DoLogin('APP URL GOES HERE');">{{this.name}}</a>
            {{/each}}
        </div>                       
    </div>
{{/each}}

2 ответа

  1. Зарегистрируйте ahelper, чтобы получить url конкретного приложения.

    шаблон:

    {{#each config.users}}
        <div class="user-panel">
            <div class="user-panel-name">{{this.name}}</div>
            <div class="user-panel-title">{{this.title}}</div>
            <div class="user-panel-apps">
                {{#each this.apps}}
                <a class="btn btn-success btn-sm" onclick="DoLogin('{{url this}}');">{{this}}</a>
                                                                      ^^^^^^^^
                {{/each}}
            </div>
        </div>
    {{/each}}
    

    скрипт:

        var val = {
            "config": {
                "users": [
                    {
                        "name": "Bob Jones",
                        "title": "Developer",
                        "apps": ["app1", "app2", "app4"]
                    },
                    {
                        "name": "Brad Willis",
                        "title": "Manager",
                        "apps": ["app2", "app4"]
                    }
                ],
                "apps": [
                    {
                        "name": "app1",
                        "url": "http://host/app1"
                    },
                    {
                        "name": "app1",
                        "url": "http://host/app1"
                    },
                    {
                        "name": "app1",
                        "url": "http://host/app1"
                    },
                    {
                        "name": "app1",
                        "url": "http://host/app1"
                    }
                ]
            }
        };
        Handlebars.registerHelper('url', function (app) {
            for (var i = 0, len = val.config.apps.length; i < len; i++) {
                if (app == val.config.apps[i].name) {
                    return val.config.apps[i].url;
                }
            }
        });