c'è alcun problema apparente con il seguente frammento:Angular.js guardare il risultato di una chiamata di funzione
<ul id="entry-name" class="breadcrumb">
<li ng-repeat="dir in pathElements()" class="active">
<span ng-show="!$last">
<a href="#!?path={{dir.url}}">{{ dir.name }}</a> <span ng-show="!$first" class="dividier">/</span>
</span>
</li>
<li class="active">{{ pathElements()[pathElements().length - 1].name }}</li>
</ul>
con questo JS:
$scope.pathElements = function() {
var retval = [];
var arr = $scope.currentPath().split('/');
if (arr[0] == '') {
arr[0] = '/';
}
var url = "/";
retval.push({name: arr[0], url: url});
for (var i = 1; i < arr.length; ++i) {
if (arr[i] != '') {
url += arr[i] + '/';
retval.push({name: arr[i], url: url});
}
}
return retval;
};
Questa sembra essere la causa di un "errore: 10 $ digest() iterazioni raggiunte. Aborting! " errore, ma non sono sicuro del perché. È perché pathElements() restituisce una nuova matrice ogni volta? C'è un modo per aggirare questo?
Non pensi che abbia senso memorizzare nella cache il path array? Stai chiamando la funzione 3 volte. A parte questo, hai pensato di usare $ routeParams? –
@Flek Il "percorso" che sto dividendo non è il percorso url effettivo, è un parametro che viene passato all'URL (come 'localhost: 8000/#? Path =/some/path') Ma sì, tu ' giusto, probabilmente dovrebbe essere memorizzato nella cache. – Alec