我想为我的控制器逻辑引入一些枚举以实现某种类型安全,所以例如我创建了这样的东西:
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;
};
}
在我的示例页面中,我会有这样的内容:
<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>
但ng-switch-when
不想工作。它仅在我ng-swith-when
用整数手动替换值时才有效,例如 1,2。
这里有一些小提琴来证明这一点:
现在,如您所见,第一个显然不起作用,第二个起作用 - 这意味着单击按钮时它会更改按钮。
我认为的问题是这个var StateEnum = Object.freeze({"login":1, "logout":2})
。
是否可以在我的 html 中使用我的枚举以便ng-switch-when
正常工作(如第二小提琴)?