Sto provando a trovare il modo migliore per ottenere una posizione di indice all'interno di ngRepeat utilizzato con una direttiva personalizzata. Il problema che sto cercando di risolvere è che per ogni iterazione di ngRepeat, mi piacerebbe l'opzione di sapere dove mi trovo nell'iterazione, così posso creare un modello personalizzato basato su quella posizione dell'indice.
A meno che non ci sia un modo migliore di fare questo, sto tentando di fare questa funzionalità sulla base di questa documentazione da direttive:
& o & attr - fornisce un modo per eseguire un'espressione nel contesto dell'ambito genitore. Se non viene specificato alcun nome attr, si assume che il nome dell'attributo sia lo stesso del nome locale. Data e definizione del widget scope: {localFn: '& myAttr'}, quindi isola la proprietà dell'ambito localFn punterà a un wrapper di funzioni per il conteggio = numero + espressione del valore. Spesso è desiderabile passare dati dall'ambito isolato tramite un'espressione e all'ambito genitore, questo può essere fatto passando una mappa di nomi e valori di variabili locali nel wrapper di espressione fn. Ad esempio, se l'espressione è incremento (quantità), è possibile specificare il valore dell'importo chiamando il localFn come localFn ({amount: 22}).
http://docs.angularjs.org/guide/directive
che sto avendo qualche difficoltà a comprendere esattamente ciò che questa affermazione mi sta dicendo. Allora, che cosa ho cercato di fare è questo ...
Prima direttiva ngRepeat in uso insieme con la mia direttiva "testTemplate":
<ul>
<li my-attr="test()" my-directive ng-repeat="value in values" class="span2">
</li>
</ul>
successivo, la mia direttiva definito:
angular.module('myModule', [])
.directive('myDirective', function() {
return {
replace : true,
transclude : true,
scope : {
test: '&myAttr'
},
templateUrl: 'partials/myTemplate.html',
link : function(scope, element, attrs) {
alert(scope.count);
}
}
});
Finalmente, sto provando a definire la funzione "test" all'interno del controller per il modello principale in cui viene fatto riferimento alla direttiva.
function TestTemplateCtrl($scope, testTemplate) {
$scope.test = function() {
alert('in test');
$scope.count = "1";
}
}
Quindi il primo problema è che la mia funzione "test" nel genitore non viene eseguita affatto. Forse non sto capendo come dovrebbe essere chiamata la funzione di test all'interno del controller genitore. Ora non sto ancora aumentando, ma è il modo corretto di cui sopra per aumentare il mio conteggio quando arrivo a quel punto se riesco a far funzionare la funzione di test?
Wow Penso che stavo rendendo questo più complicato quindi necessario. Posso solo prendere l'indice all'interno della mia funzione di collegamento con scope. $ Parent. $ Index.Mi piacerebbe ancora sapere perché la mia funzione di "test" non è stata attivata solo per riferimento futuro. – DavidB