?
This document uses PHP Chinese website manual Release
ngSwitch
指令用于根據(jù)域表達式在你的模板上按條件切換DOM結(jié)構(gòu)。元素內(nèi)使用ngSwitch
而非ngSwitchWhen
或ngSwitchDefault
指令的地方會保留在模板中的位置。
這個指令的工作方法類似于ngInclude,然而,使用下載的模板代碼替換(或從模板緩沖中載入),ngSwitch
只從嵌套元素中簡單選擇一個,并讓根據(jù)將匹配表達式值的元素顯示出來。換句話說,你定義一個包含元素 (在你放置指令的地方),放置一個表達式在 on="..."
屬性 (或 ng-switch="..."
屬性)上,然后在指令內(nèi)定義任何內(nèi)部元素,并放置when屬性到每個元素上。when屬性用于告訴ngSwitch當表達式計算時顯示哪個元素。如果匹配的表達式?jīng)]在when屬性中找到,會顯示default屬性對應(yīng)的元素。
ng-switch-when="someVal"
將匹配字符串 "someVal"
,而不會對應(yīng)為表達式$scope.someVal
的值。<ANY ng-switch="expression">
<ANY ng-switch-when="matchValue1">...</ANY>
<ANY ng-switch-when="matchValue2">...</ANY>
<ANY ng-switch-default>...</ANY>
</ANY>
enter - 在ngSwitch的內(nèi)容改變并匹配到內(nèi)部子元素后發(fā)生。
leave - 只在ngSwitch內(nèi)容改變后并在原內(nèi)容從DOM移除前發(fā)生。
點擊這里 了解更多關(guān)于涉及動畫的步驟。參數(shù) | 類型 | 詳述 |
---|---|---|
ngSwitch | on | * |
用于匹配 ng-switch-when的表達式。在子元素可添加:
|
<div ng-controller="ExampleController">
<select ng-model="selection" ng-options="item for item in items">
</select>
<tt>selection={{selection}}</tt>
<hr/>
<div class="animate-switch-container"
ng-switch on="selection">
<div class="animate-switch" ng-switch-when="settings">Settings Div</div>
<div class="animate-switch" ng-switch-when="home">Home Span</div>
<div class="animate-switch" ng-switch-default>default</div>
</div>
</div>
angular.module('switchExample', ['ngAnimate'])
.controller('ExampleController', ['$scope', Function($scope) {
$scope.items = ['settings', 'home', 'other'];
$scope.selection = $scope.items[0];
}]);
.animate-switch-container {
position:relative;
background:white;
border:1px solid black;
height:40px;
overflow:hidden;}
.animate-switch {
padding:10px;}
.animate-switch.ng-animate {
-webkit-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;
transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 0.5s;
position:absolute;
top:0;
left:0;
right:0;
bottom:0;}
.animate-switch.ng-leave.ng-leave-active,.animate-switch.ng-enter {
top:-50px;}.animate-switch.ng-leave,.animate-switch.ng-enter.ng-enter-active {
top:0;}
var switchElem = element(by.css('[ng-switch]'));
var select = element(by.model('selection'));
it('should start in settings', Function() {
expect(switchElem.getText()).toMatch(/Settings Div/);});
it('should change to home', Function() {
select.all(by.css('option')).get(1).click();
expect(switchElem.getText()).toMatch(/Home Span/);});
it('should select default', Function() {
select.all(by.css('option')).get(2).click();
expect(switchElem.getText()).toMatch(/default/);});