Angularjs 如何使用ng开关满足多个相同条件?
我想根据身份验证状态使用AngularJS创建一段HTML 我使用ng开关 问题是,我希望在一个条件上有多个点击,但AngularJS只满足最后一个条件 由于Bootrap具有流畅的布局,HTML的侦听非常紧密。span3和span9必须位于row流体容器div的正下方,否则它将无法很好地浮动。所以我不能给它引入额外的ng开关divAngularjs 如何使用ng开关满足多个相同条件?,angularjs,Angularjs,我想根据身份验证状态使用AngularJS创建一段HTML 我使用ng开关 问题是,我希望在一个条件上有多个点击,但AngularJS只满足最后一个条件 由于Bootrap具有流畅的布局,HTML的侦听非常紧密。span3和span9必须位于row流体容器div的正下方,否则它将无法很好地浮动。所以我不能给它引入额外的ng开关div <div class="row-fluid" ng-switch on="user.isAuthenticated"> <div class="s
<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>
请参阅我的简化版。角度1.1.5支持ng if。你可以看看。然后可以有独立的条件。角度1.1.5支持ng if。你可以看看。然后您就可以拥有独立的条件。不幸的是,自从AngularJS版本1.1.3以来,ng开关指令只支持多个匹配
请参阅和作为参考。不幸的是,自AngularJS版本1.1.3以来,ng switch指令仅支持多个匹配
请参阅和作为参考。如果有人重写了ngSwitchWhen指令以包含允许| |运算符的选项,您可以在此处找到原始响应:由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;
});
});
有人重写了ngSwitchWhen指令以包含允许| |运算符的选项,您可以在这里找到原始响应:由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;
});
});
不幸的是,1.1.5是一个不稳定的版本。有没有可能在1.0.7稳定环境下工作?如果我相信是从angularui开始的话。您有1.1.5的源代码。如果它没有任何依赖项,就把它作为源代码拉出来。我用ng show而不是ng if或ui if修复了它,并且它可以工作。当AngularJS 1.1.5变得稳定或升级为稳定时,我将用ng if语句替换ng show,这样DOM就不会受到污染。举个例子就好了。不幸的是1.1.5是一个不稳定的版本。有没有可能在1.0.7稳定环境下工作?如果我相信是从angularui开始的话。您有1.1.5的源代码。如果它没有任何依赖项,就把它作为源代码拉出来。我用ng show而不是ng if或ui if修复了它,并且它可以工作。当AngularJS 1.1.5变得稳定或升级为稳定时,我将用ng if语句替换ng show,这样DOM就不会受到污染。Thx。举个例子就好了。谢谢你发布我几周前找到的解决方案。当它帮助别人时,我很高兴。事实证明,它在最新的1.2.0-rc.3中仍然可以很好地工作。顺便说一句:$routeProvider的注入实际上是不需要的,但我想每个angular应用程序都依赖它,因此这段代码的去向更加清晰。感谢您发布我几周前找到的解决方案。当它帮助别人时,我很高兴。事实证明,它在最新的1.2.0-rc.3中仍然可以很好地工作。顺便说一句:$routeProvider的注入实际上是不需要的,但我想每个angular应用程序都依赖于它,所以这段代码的去向就更清楚了。