我想根据身份验证状态使用AngularJS创建一段HTML。
我使用ng-switch
。
问题是我希望在一个条件下有多次点击,但AngularJS只满足最后一个条件。
HTML监听非常接近,因为Bootrap具有流畅的布局。 span3
和span9
必须位于row-fluid
容器div的正下方,否则它将无法漂浮。所以我不能为它引入额外的ng-switch
div ...
<div class="row-fluid" ng-switch on="user.isAuthenticated">
<div class="span3" ng-switch-when="true"><div>
<div class="span9 spade-contentwrapper" ng-switch-when="true"><div>
<div class="spade-contentwrapper" ng-switch-when="false"><div>
<div>
请参阅我的简化fiddle。
答案 0 :(得分:3)
Angular 1.1.5支持ng-if
。你可以看看that。那么你可以有独立的条件。
答案 1 :(得分:1)
有人覆盖了ngSwitchWhen指令以包含允许||的选项运营商,您可以在此处找到原始回复:http://docs.angularjs.org/api/ng.directive:ngSwitch来自angabriel
config(function($routeProvider, $provide) {
/**
* overwrite angular's directive ngSwitchWhen
* can handle ng-switch-when="value1 || value2 || value3"
*/
$provide.decorator('ngSwitchWhenDirective', function($delegate) {
$delegate[0].compile = function(element, attrs, transclude) {
return function(scope, element, attr, ctrl) {
var subCases = [attrs.ngSwitchWhen];
if(attrs.ngSwitchWhen && attrs.ngSwitchWhen.length > 0 && attrs.ngSwitchWhen.indexOf('||') != -1) {
subCases = attrs.ngSwitchWhen.split('||');
}
var i=0;
var casee;
var len = subCases.length;
while(i<len) {
casee = $.trim(subCases[i++]);
ctrl.cases['!' + casee] = (ctrl.cases['!' + casee] || []);
ctrl.cases['!' + casee].push({ transclude: transclude, element: element });
}
}
}
return $delegate;
});
});
答案 2 :(得分:0)