Ho fatto un sacco di soluzioni, cercato e ricercato, ma non riesco a capire come raggiungere il mio obiettivo.Valutazione di un'espressione in un attributo di una direttiva in AngularJS
- Il problema:
- Ho un la seguente situazione, voglio evitare che l'utente può commissioni sovrapposizione date in un contratto. Quando l'utente aggiunge una nuova commissione , viene mostrato un elenco con le Commissioni aggiunte generate con a ngRepeat, questo ha la difficoltà per l'utente di modificare le date. Nella parte dei contratti, questo non è un problema, perché per modificare un contratto , devi andare su altra schermata e modificarlo, le date non possono essere modificate nella stessa vista.
-Dove mi confondo:
- Quando modifico una commissione che è stata aggiunta, devo confrontare con l'altro che ciò che ha aggiunto prima, quindi, voglio avere una lista , con tutte le date delle commissioni definite, e può dire nella direttiva, fatturando una funzione che restituisce una lista con tutte le date esclusa la data della commissione che sto modificando.
- Come spero risolverlo:
- voglio fare qualcosa di simile:
<input type="text" name="newComission_dateFrom" ng-model="newCommission.from" notincluded=myFunction({{$index}})/>
e la funzione myFunction, sarà iterare su una lista che contiene tutti i dati delle commissioni aggiunte e la confronterà con tutti gli intervalli di date, tranne con la gamma contenuta in addedCom misionsDates [index].
L'obiettivo è possibile valutare un'espressione in un attributo senza utilizzare un ambito isolato.
ho avuto un sacco di problemi con gli ambiti isolati, e ho finito d'accordo con questo post:
EDIT che cercavo come è stato attuato ngRequire, perché ngRequire può accettare ng-richiedono = "aFunction()", ho raggiunto questo obiettivo nella mia direttiva, utilizzando $ parser. Quindi, Ora posso eseguire una funzione! Ho fatto qualche progresso con questo, ma voglio avere la conseguenza di eseguire la funzione nella mia direttiva, voglio raggiungere qualcosa di simile
rangesToEval = // il risultato della mia funzione o espressione.
Guardando le cose che hanno ngRepeat, io non riesco a capire in che ambito è il valore che restituiscono questa funzione
if(attrs.notincluded) {
var notIncludedValidator = function(value) {
ngModelCtrl.$setValidity('notincluded', !attrs.notincluded);
return value;
};
}
tutto funziona bene, perché sto utilizzando un valore booleano, ma, voglio usare un elenco che è il risultato di eseguire l'expresion nell'attributo NON sono compresi
// Questo ingresso è parte di un ng-repeat
<input type="text" ng-model="commission.date" ng-required="true" notincluded="filterDatesFn({{$index}})" />
Ho la funzione nella mia regolatore:
$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;
}
};
Quindi il mio prossimo obiettivo è possibile passare a:
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;
};
}
Sarò distacco il progresso di questa ricerca.
sarò grato è qualcuno può aiutare o condividere qualsiasi idea
vediamo più tardi!