2015-01-24 7 views
5

ho una direttiva personalizzato come questo:

myApp.directive('input', function() { 
    return { 
     restrict: 'E', 
     scope: true, 
     link: function (scope, elem) { 
      if (scope.lang && elem.attr('type') === 'text') { 
       elem.attr('lang', 'fa'); 
       console.log(scope.lang); 
      } 
     } 
    }; 
}); 

che aggiungono attributo lang='fa' a tutti gli input: il testo e anche io sto usando DatePicker angular Ui ma ottengo un errore:

Error: 
    [$compile:multidir] Multiple directives [datepickerPopupPersian, input] asking for 

    new/isolated scope on: 
    <input type="date" name="birth" class="form-control ng-pristine 
    ng-untouched ng-valid" 
    datepicker-popup-persian="{{formats.ShowDate}}" tabindex="7" 
    ng-model="requesterViewModel.BirthDate" 
    is-open="datePicker.opened" datepicker-options="dateOptions" date-disabled="disabled(date, mode)" 
close-text="بسته" 
    max-date="dt"> 

quando commento datePicker nel mio modulo funziona tutto bene.
Qualche idea? Grazie

+0

La direttiva non ha realmente bisogno dell'ambito; prova ad usare 'scope: false'. –

+0

Ciao insegnante :), hai salvato la mia giornata di ieri, quando la rimuovo, la direttiva personalizzata non funziona perché nel mio controller ho aggiunto questo: $ scope.lang = 'faLang'; – sani

+0

:) Se disabiliti la tua direttiva 'input' (commenta totalmente il codice), il problema persiste? –

risposta

7

Questa direttiva non ha realmente bisogno di un nuovo ambito figlio (né isolato). È molto meglio configurarlo con scope: false. Non si limiterà a risolvere questo problema, ma anche a salvare diversi (a seconda del progetto delle viste, ovviamente) creazioni di oggetti di ambito non necessarie.

+2

im ottenendo lo stesso errore e il mio campo d'applicazione è impostata come questo ambito : { onselectclient: '&', clientEntityType: '=', excludedClientIds: '=', }, cosa devo fare qui? –