Угловые реляционные модели? Может ли модель ссылаться на другую модель?

У меня есть многоуровневая навигационная структура, например, которая производит верхнюю навигацию:

[
{id: 1, label: 'Home', icon: 'fa-home', subitems: []},
{id: 2, label: 'Sitemap', icon: 'fa-sitemap', subitems: []},
{id: 3, label: 'Contact', icon: 'fa-phone', subitems: []}
]

Это прекрасно работает, но вместо этого я хотел бы сделать что-то вроде этого, чтобы определить структуру навигации:

[
{id: 1, subitems: []}, 
{id: 3, subitems: []}, 
{id: 2, subitems: []}
]

и отдельная связанная модель, которая содержит отдельный список определений nav:

[
{id: 1, label: 'Home', icon: 'fa-home'},
{id: 2, label: 'Sitemap', icon: 'fa-sitemap'},
{id: 3, label: 'Contact', icon: 'fa-phone'}
]

Это позволило бы мне дублировать элементы навигации и обновлять свойства в одном месте без дублирования определений. Backbone имеет реляционный плагин, который допускает такого рода вещи - не уверен, как сделать что-то подобное в угловых. Я мог бы просто перебрать исходные навигационные идентификаторы и заменить их определениями с любыми изменениями, но я подумал, что может быть лучший способ сделать это с Angular 1.x

1 ответ

Чистым угловым способом решения некоторых дублирующих проблем является использование многократно используемых директив.

function navigationItemDirective() {
     return {
        link: function(scope, element, attrs) {
            console.log(info) // get all necessary info
        scope: {
            info: "=info" // two-way binding to your separate model
            id: "@" // unique id for to bind the directive with the model
        }
    }
}
angular.module("app").directive("navigationElemenent", navigationItemDirective);
Другие вопросы по тегам