2014-12-13 61 views
0

大家好!我有這對我的指令模板...角度 - 由父控制器處理的指令的事件

<div class="priceSlider" ui-slider="slider.options" min="{{min}}" max="{{max}}" 
step="0.01" use-decimals ng-model="sliderVal"><div>{{currency}} {{sliderVal[0]}} - 
{{currency}}  {{sliderVal[1]}}</div> 

..和我有這個在我的JS的指令

angular 
.module('app.directives.categoryHead', []) 
.directive('categoryHead', function() { 
    return { 
     restrict : 'E', 
     controller: function($scope){ 
     $scope.sliderVal = [$scope.min , $scope.max]; 
     $scope.slider = { 
      'options': { 
       range: true, 
       start: function (event, ui) { console.log('Event: Slider start - set with slider options', event); }, 
       stop: function (event, ui) { console.log('Event: Slider stop - set with slider options', event); } 
      } 
     } 
     }, 
     scope: { 
      language : "=", 
      currency : "=", 
      breadcrumb : "=", 
      min : "=", 
      max : "=" 
     }, 
     templateUrl: "templates/directives/categoryHead.html" 
    } 

});

...和我的路由模板,我有這個...

<category-head breadcrumb="breadCrumb" min="categoryList.minPrice" 
max="categoryList.maxPrice" language="webshop.language" 
currency="webshop.culture.currency"></category-head> 

所以,基本上我有一個滑塊......這是觸發事件的開始和停止 - 而這個作品真的精細。 但我想處理不在指令內的事件,而是在路由模板的控制器上。

如何將事件從指令「傳送」到模板控制器?我只需要發出「改變的東西」併發送新值的通知。

ty!

回答

0

可能有很多不同的方法來做到這一點。一種選擇是讓你在你的控制器定義了你的指令起飛的事件處理程序,如下所示:

<your-directive on-start="startHandler()" on-stop="stopHandler()></your-directive>

然後,在你的指令配置:

scope: { onStart: '&', onStop: '&' }

然後,添加的東西像這樣的指令在你的啓動/停止方法。

$scope.slider = { 'options': { range: true, start: function (event, ui) { if (onStart) onStart(event); /* other stuff */ }, stop: function (event, ui) { if (onStop) onStop(event); /* other stuff */ } } }

相關問題