Помощники на уровне модели AngularJS

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

{
    accessFailedCount: 0
    active: false
    created: "2014-05-09T14:39:56.867Z"
    email: "austin@austin.com"
    emailConfirmed: false
    fullName: "Austin Frtizer"
    id: "536ce8bce352b815b8791f53"
    imageId: null
    isMe: true
    lastLogin: "2014-05-09T14:39:56.867Z"
    userName: "admin"
}

Я хочу добавить помощника, который будет возвращать отображаемое имя из моего экземпляра модели... но это может быть комбинация значений в зависимости от заполненных значений, таких как:

fullName || email || userName

с другими JS-средами, которые я использовал, вы могли "обернуть" результаты модели с сервера вспомогательными методами, такими как myInstanceModel.displayName(),

Я знаю, что вы могли бы сделать это миллионами разных способов, но мне было интересно, есть ли здесь "угловой путь" для чего-то подобного.

1 ответ

Решение

Один из миллиона способов создать фильтр:

app.filter('displayName', function() {
    return function(user) {

        return user.fullName || user.email || user.userName;
    }
});

тогда в вашем html:

{{user | displayName}}

или используйте его внутри контроллера:

function myCtrl($scope, $filter)
{
    var displayName = $filter('displayName')(user);
}
Другие вопросы по тегам