【发布时间】:2013-05-13 17:34:54
【问题描述】:
我想在我的控制器逻辑中引入一些枚举以实现某种类型安全,所以例如我创建了这样的东西:
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 可以正常工作(如第二小提琴)?
【问题讨论】:
标签: javascript angularjs enums