I wanted to introduce some enum to my controller logic for some type safety, so for example I created something like this:
var app = angular.module('myApp', []);
var StateEnum = Object.freeze({"login":1, "logout":2})
function LoginCheckCtrl($scope) {
$scope.stateEnum = StateEnum
$scope.loginData = StateEnum.login
$scope.login = function() {
console.log($scope.loginData ? 'logged in' : 'not logged in');
$scope.loginData = StateEnum.logout;
};
$scope.logout = function() {
console.log($scope.loginData ? 'logged in' : 'not logged in');
$scope.loginData = StateEnum.login;
};
}
and in my example page I would have something like this:
<div ng-controller="LoginCheckCtrl">
<div ng-switch on="loginData">
<div ng-switch-when="stateEnum.login" ng-include="'login'"></div>
<div ng-switch-when="stateEnum.logout" ng-include="'logout'"></div>
</div>
</div>
<script type="text/ng-template" id="login">
<button ng-click="login()">Login</button>
</script>
<script type="text/ng-template" id="logout">
<button ng-click="logout()">Logout</button>
</script>
but ng-switch-when does not want to work. It only works if I substitute values in ng-swith-when manually with integers, for example 1,2.
Here are fiddles to demonstrate this:
now, as you can see, the first one clearly does not work, and second one works - meaning it changes button when button is clicked.
The problem I think is this var StateEnum = Object.freeze({"login":1, "logout":2}).
Is is possible to use my enum in my html so ng-switch-when will work properly (as in second fiddle)?