Chciałem wprowadzić pewne wyliczenia do mojego Logic Controller jakiegoś bezpieczeństwa typu, więc na przykład stworzyłem coś takiego:angularjs i ng-switch-kiedy - emulacji enum
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;
};
}
aw moim przykładzie strona chciałbym mieć coś takiego:
<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>
ale ng-switch-when
nie chce pracować. Działa tylko wtedy, gdy ręcznie podaję wartości w ng-swith-when
za pomocą liczb całkowitych, na przykład 1,2.
Oto skrzypce to wykazać:
teraz, jak widać, pierwszy wyraźnie nie działa, a drugi działa - co oznacza, że zmienia się przycisk, gdy przycisk jest kliknięty.
Problem, który moim zdaniem jest następujący: var StateEnum = Object.freeze({"login":1, "logout":2})
.
Czy można używać mojego wyliczenia w moim html, więc ng-switch-when
będzie działać poprawnie (jak w drugim skrzypku)?
Ok, ale problemem nie jest to, jak zarządzać moje wyliczenia, nawet jeśli usługa jest dobrym pomysłem, chodzi o to, że "widok" - HTML nie działa z moim wyliczeniem - w pierwszym skrzypku żaden przypadek nie jest dopasowany. – Andna
Czy zdefiniowano zewnętrzne widoki? Chodzi mi o to, gdzie jest login.html, robienie tego na skrzypcach jest trochę trudne, sugerowałbym użycie plunkr. – lucuma
Nie mam żadnych zewnętrznych widoków afaik, cały html jest w html box – Andna