Кто-нибудь пытался использовать typescript перечисления в HTML-страницах AngularJS?
В Typescript я создал перечисление следующим образом:
enum Action { None = 0, Registering = 1, Authenticating = 2 };
В моем контроллере я устанавливаю свойство, называемое action следующим образом:
class AuthService implements IAuthService {
action: number;
constructor(
private $state,
private userService,
private utilityService: IUtilityService
) {
this.action = Action.None;
}
doRegister() => {
this.action = Action.Registering;
}
Это работает хорошо, но как я могу использовать перечисление в своем HTML. Это возможно? Я хотел бы использовать его в таком месте:
<span ng-class="{'fa-spin fa-spinner': app.authService.authenticating }">
Без необходимости создавать разные переменные для:
app.authService.authenticating
app.authService.registering
...
etc
Ответы
Ответ 1
Вы можете поместить это на $rootScope
например.
mainmodule.run([
'$rootScope'
], function ($rootScope){
// put it on $rootScope
$rootScope.Action = Action;
});
И так как каждый $scope
наследует от него, он находится на каждой области, и вы можете просто сделать Action.foo
и т.д.
Примечание. Для директив с областью выделения вам нужно сделать $root.Action.foo
. Просто Action
не будет работать, поскольку он намеренно нарушает цепочку прототипов.