Помощники на уровне модели 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);
}