2016-03-01 109 views
0

我正在創建一個指令,它包裝傳遞特定屬性的組件。到目前爲止,我有以下幾點。請注意,它需要訪問父範圍才能正常工作。問題是isOpen變量被放在父範圍上。因此,同一範圍內的兩個日期選擇器(例如開始日期和結束日期)不能獨立觸發。角度指令反向隔離範圍

app.directive('mzDatePicker', [ 
'underscore', 
(_) => { 
'use strict' 
const dasherize = name => 
    name.replace(/[A-Z]/g, (letter, pos) => (pos ? '-' : '') + letter.toLowerCase()); 

return { 
    restrict: 'E', 
    template: (el, attr) => { 
     //Note ng-required won't work with the same strategy as other attributes 
     return ` 
      <input uib-datepicker-popup 
       is-open="isOpen" 
       show-weeks="false" 
       show-button-bar="false" 
       ng-required="${'undefined' == typeof attr.ngRequired ? '' : 'true'}" 
       ${ 
        _.chain(attr) 
         .pick('ngModel', 'ngModelOptions', 'placeholder', 'class', 'maxDate', 'minDate', 'dateDisabled') 
         .pairs() 
         .map(x => `${dasherize(x[0])}="${x[1]}"`) 
         .value() 
         .join(' ') 
       } 
       /> 
      <button type="button" ng-click="isOpen = !isOpen"> 
       <i class="fa fa-calendar"></i> 
      </button> 
     ` 
    } 
} }]) 

我可以指令隔離只是ISOPEN變量範圍

回答

0

啊,原來我想要一個子範圍。設置

scope: true 

效果很好。