2016-01-20 77 views
1

我正在嘗試在angularJS中執行slider。我有一個事件監聽器的子指令。當主事件(mousedown)被監聽時,它會從父指令(通過控制器)調用一個函數並更改各種html元素的樣式。當頁面上只有一條指令時,它就像一個魅力一樣。如果有多個,每個父控制器都會被調用。 我不明白爲什麼。子指令訪問每個父指令

Plknr:http://plnkr.co/edit/9vGXxjDbqqEOzLcXRkoW?p=preview

家長指令:

return { 
     restrict: 'EA', 
     scope: { 
      sliderStep: '@', 
      sliderBothHandles: '@', 
      sliderMinVal: '=', //value min handle 
      sliderMaxVal: '=', //value max handle 
      sliderMin: '@', //minimum value authorized 
      sliderMax: '@' //maximum value authorized 
     }, 
     templateUrl: 'slider_template', 
     controller: sliderController, 
     transclude: true 

}; 

兒童指令:

return { 
     restrict: 'EA', 
     link: link, 
     require: '^mcsSlider', 
     scope: true 
}; 

標記:

<mcs-slider slider-step="1" slider-max-val="formCtrl.value1" slider-min="0" slider-max="7200"> 
    <div mcs-slider-handle class="slider-handle max-slider-handle round" aria-valuemin="0" aria-valuemax="7200" aria-valuenow="{{formCtrl.value1}}" tabindex="0" style="left:0%;"></div> 
</mcs-slider> 
+0

我仍然試圖找出'mcsSliderHandle'指令中的'$ interval'。 可以'$('。min-slider-handle').css('left')'成爲問題嗎? – elTomato

回答

1

該問題似乎在mcsSliderHandle指令的$interval函數中。 您使用的是$('.min-slider-handle'),它將查找所有具有該類的元素! 您只需檢索當前指令內的元素。 錯誤,但工作的掠奪者here

+0

非常感謝 – Jood