Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 如何使用ng开关满足多个相同条件?_Angularjs - Fatal编程技术网

Angularjs 如何使用ng开关满足多个相同条件?

Angularjs 如何使用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

我想根据身份验证状态使用AngularJS创建一段HTML

我使用ng开关

问题是,我希望在一个条件上有多个点击,但AngularJS只满足最后一个条件

由于Bootrap具有流畅的布局,HTML的侦听非常紧密。span3和span9必须位于row流体容器div的正下方,否则它将无法很好地浮动。所以我不能给它引入额外的ng开关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>

请参阅我的简化版。

角度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应用程序都依赖于它,所以这段代码的去向就更清楚了。