2013-07-27 96 views
1

我試圖創建一個滑塊指令,使用ngSwitch和ngAnimate的this example,但沒有成功。有一個超時調用next函數增加scope.current變量和ngSwitch應該使用此變量切換圖像。ngSwitch滑塊指令不起作用

<div class="slider"> 
    <img src="..." /> 
    <img src="..." /> 
    <img src="..." /> 
</div> 

這裏是我的plunker的例子。我認爲這與範圍有關(它總是你的範圍)。 更新:我做了一些進步,我把屬性操作移動到編譯函數,它似乎有所幫助,但現在我得到一個錯誤:No controller: ngSwitch
new plunker

+0

您正在添加鏈接功能的指令。我認爲這是錯誤的,因爲指令是在「編譯」階段編譯的,然後返回鏈接函數。因此,在鏈接函數的元素中添加更多指令將無濟於事。 –

+0

此外,您將不得不添加css實際效果,因爲ng-animate只是將元素添加到元素 –

+0

是的我知道css,這將在以後。我應該在編譯函數中添加指令嗎?我會稍後再測試。 – olanod

回答

1

之所以Angularjs顯示錯誤No controller: ngSwitch是因爲ng-switch-when取決於ng-switch。所以當創建ng-switch作用域時,您應該添加ng-switch-when的屬性。最簡單的方法是在ngSwitch上使用$observe

這裏是使編譯工作

attrs.$observe('ngSwitch', function() { 
     for (i = _i = 0, _len = pages.length; _i < _len; i = ++_i) { 
      page = pages[i]; 
      page.setAttribute('ng-switch-when', i); 
     } 
    }); 

但是,因爲你不能在current值訪問由於新創建的範圍ng-switch動畫將無法正常工作的一種方式。

爲了使指令工作,我認爲最簡單的方法是在模板中聲明ng-switch="current",以便指令可以訪問它所監視的值。

希望它能闡明一些。

1

我有一個使用ng-if替代ng-switch的解決方法,請參閱here

如果你想堅持使用ng-switch,我建議你仔細看看由ng-switch創建的作用域(see this)。