2015-01-24 14 views
5

mam dyrektywę niestandardową takiego:

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); 
      } 
     } 
    }; 
}); 

że dodanie atrybutu lang='fa' wszystkim wejście: tekst, a także używam DatePicker angular Ui ale pojawia się błąd:

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"> 

kiedy skomentować datepicker w moim formularzu wszystko dobrze działa.
Każdy pomysł? Dzięki

+0

Twoja dyrektywa tak naprawdę nie potrzebuje zasięgu; spróbuj użyć 'scope: false'. –

+0

Cześć mój nauczycielu :), zapisałeś mój dzień wczoraj, kiedy go usunąłem, niestandardowa dyrektywa nie działa, ponieważ w moim kontrolerze dodałem to: $ scope.lang = 'faLang'; – sani

+0

:) Jeśli wyłączysz dyrektywę "input" (całkowicie skomentujesz kod), czy problem będzie nadal występował? –

Odpowiedz

7

Ta dyrektywa w rzeczywistości nie wymaga nowego zakresu dla dzieci (ani izolowanego). Znacznie lepiej jest skonfigurować go za pomocą scope: false. Pozwoli to nie tylko rozwiązać ten problem, ale także zaoszczędzić kilka (w zależności od projektu widoków) niepotrzebnych kreacji obiektów zakresu.

+2

im dostawanie ten sam błąd i mój zakres jest ustawiony jak ten zakresie: { onselectclient: '&', clientEntityType: '=', excludedClientIds: '=', } co należy zrobić tutaj? –