Zrobiłem dużo obejścia, przeszukano i przeszukano, ale nie mogę wymyślić, jak osiągnąć mój cel.Ocena wyrażenia w atrybucie dyrektywy w AngularJS
- Problem:
- Mam następującą sytuację chcę uniknąć użytkownikowi prowizji nakładania mogą daty w umowie. Gdy użytkownik doda nową prowizję , wyświetlimy listę z dodanymi prowizjami wygenerowanymi za pomocą a ngRepeat, ma to trudności z możliwością edycji dat przez użytkownika. W części umów nie stanowi to problemu, ponieważ aby edytować umowę , musisz przejść do innego ekranu i edytować go, daty nie mogą być zmienione w tym samym widoku co .
Gdzie ja się mylić:
- Kiedy edytować prowizję, która została dodana, muszę porównać go z innymi, że co dodawać przed, więc chcę mieć listę , ze wszystkimi datami zdefiniowanych prowizji i można powiedzieć w dyrektywie fakturowanie funkcji, która zwraca listę z wszystkimi datami bez daty prowizji, którą edytuję.
- Jak mam nadzieję rozwiązać go:
- chcę zrobić coś takiego:
<input type="text" name="newComission_dateFrom" ng-model="newCommission.from" notincluded=myFunction({{$index}})/>
i myFunction funkcyjnego będzie iterować listę która zawiera wszystkie dodaneDaty wysyłek i porówna je ze wszystkimi zakresami dat, z wyjątkiem zakresu zawartego w dodanymCom misionsDates [indeks].
Celem jest ocena wyrażenia w atrybucie bez użycia izolowanego zakresu.
miałem wiele problemów z pojedynczych zakresów, a skończyłem zgadzając się z tym poście:
EDIT szukałem jak został wdrożony ngRequire, ponieważ ngRequire może zaakceptować NG-wymagać = "aFunction()", dotarłem ten cel w moim dyrektywy, używając $ parser. Więc, Mogę teraz wykonać funkcję! Zrobiłem postępy, korzystając z tego, ale chcę mieć wynik wykonania funkcji w mojej dyrektywie, chcę osiągnąć coś takiego:
rangesToEval = // wynik mojej funkcji lub wyrażenia.
Szukam rzeczy, które ngRepeat, nie mogę się zorientować, w jakim zakresie jest wartość, która powrotu Ta funkcja
if(attrs.notincluded) {
var notIncludedValidator = function(value) {
ngModelCtrl.$setValidity('notincluded', !attrs.notincluded);
return value;
};
}
wszystko działa dobrze, bo używam wartość logiczną, ale chcę używać to lista jest wynikiem wykonania wprowadzić wyrażenie w atrybucie notincluded
// to wejście jest częścią nG-repeat
<input type="text" ng-model="commission.date" ng-required="true" notincluded="filterDatesFn({{$index}})" />
Mam funkcję w moim kontrolera:
$scope.filterDatesFn = function(index) {
// in this list, we will add the dates of the defined commissions
if($scope.addedCommisionsDate) {
var listToEvalue= [];
for (var i = 0; i < $scope.addedCommisionsDate.length; i++) {
if(i != index) {
listToEvalue.push($scope.addedCommisionsDate[i]);
}
}
return listToEvalue;
}
};
Więc moim następnym celem jest może zmienić:
if(attrs.notincluded) {
var notIncludedValidator = function(value) {
--put the listToEvalue here and do my comparations and validate or invalidate the form in base of the comparation That I do here.
return value;
};
}
będę delegowania postępu badań.
będę wdzięczny jest ktoś może pomóc lub udostępnić jakiś pomysł
zobaczenia później!