是否有可能有一个或NG-开关时?
<div ng-repeat="w in windows" ng-show="visibleWindowId == w.id" ng-switch="w.type">
<div ng-switch-when="val1 **OR** val2">
sup
</div>
</div>
如果没有,怎么可能上面的实现呢?
谢谢 :)
是否有可能有一个或NG-开关时?
<div ng-repeat="w in windows" ng-show="visibleWindowId == w.id" ng-switch="w.type">
<div ng-switch-when="val1 **OR** val2">
sup
</div>
</div>
如果没有,怎么可能上面的实现呢?
谢谢 :)
ngswitch
只允许您比较单一的状况。
我你正在寻找测试多个条件,您可以使用ng-if
可用的1.1.5版本
参考
需要注意的是重要的,使用ng-if
和ng-switch
从DOM中删除元素的结构,而不是显示和隐藏。
当你遍历DOM寻找元素,这是非常重要的。
这是现在可以使用ng-switch-when-separator
将其加入到角文档中1.5.10:
<div ng-repeat="w in windows" ng-show="visibleWindowId == w.id" ng-switch="w.type">
<div ng-switch-when="val1|val2" ng-switch-when-separator="|">
sup
</div>
</div>
这将工作太
<div ng-repeat="w in windows" ng-switch="w.type == 'val1' || w.type == 'val2'"> <div ng-switch-when="true"> sup </div> </div>
我创建了地方的简单指令ngSwitchWhen
,使您可以为单个标签指定多个案件。 它还允许你指定动态值,而不是纯粹的静态值。
有一点需要注意,它仅在编译时计算表达式一次,所以你必须立即返回正确的值。 对于我而言,这是罚款,我想使用的应用程序的其他地方定义的常量。 它也许可以被修改,以动态地重新评估表达但这需要更多的测试ngSwitch
。
我使用的角度1.3.15,但我跑了一个快速的测试与角1.4.7和它工作得很好那里。
Plunker演示
module.directive('jjSwitchWhen', function() {
// Exact same definition as ngSwitchWhen except for the link fn
return {
// Same as ngSwitchWhen
priority: 1200,
transclude: 'element',
require: '^ngSwitch',
link: function(scope, element, attrs, ctrl, $transclude) {
var caseStms = scope.$eval(attrs.jjSwitchWhen);
caseStms = angular.isArray(caseStms) ? caseStms : [caseStms];
angular.forEach(caseStms, function(caseStm) {
caseStm = '!' + caseStm;
ctrl.cases[caseStm] = ctrl.cases[caseStm] || [];
ctrl.cases[caseStm].push({ transclude: $transclude, element: element });
});
}
};
});
$scope.types = {
audio: '.mp3',
video: ['.mp4', '.gif'],
image: ['.jpg', '.png', '.gif'] // Can have multiple matching cases (.gif)
};
Template
<div ng-switch="mediaType">
<div jj-switch-when="types.audio">Audio</div>
<div jj-switch-when="types.video">Video</div>
<div jj-switch-when="types.image">Image</div>
<!-- Even works with ngSwitchWhen -->
<div ng-switch-when=".docx">Document</div>
<div ng-switch-default>Invalid Type</div>
<div>
你可以使用ng-class
,这样就可以使用or
在您的表达式运算符。 此外,角UI有if
指令。