Ich verwende eine App, bei der die Navigation einen mehrsprachigen Link enthält, der eine Statusänderung auslöst.Resolve-Array wird bei jeder Statusänderung mit UI-Router dupliziert.
Das Problem, auf das ich stoße, ist, dass bei jedem Statuswechsel von einer Sprache in die andere das Array, das aus der Statusauflösung kommt, dupliziert wird.
Zum Beispiel:
- Ersten Last = 8 Artikel
- erste Zustandswechsel = 16 Artikel
- zweite Zustandsänderung = 24 Artikel
- ...
I‘ ve erstellt eine Plunker to replicate the issue.
Hier ist mein Zustand Code:
.config(function($stateProvider) {
$stateProvider.state('fair', {
url: '/fair/{fair}',
resolve: {
fair: function(SearchService, $stateParams) {
var string = $stateParams.fair.replace(/-/g , "");
var finalstring = string.replace(/liste/g , " ");
return SearchService.getAllExhibitors(finalstring);
}
},
views: {
'header': {
templateUrl: 'header.htm',
controller:'appCtrl'
},
'main':{
templateUrl: 'fair.htm',
controller: 'appCtrl'
}
}
})
.state('fairde', {
url: '/de/fair/{fair}',
resolve: {
fair: function(SearchService, $stateParams) {
var string = $stateParams.fair.replace(/-/g , "");
var finalstring = string.replace(/liste/g , " ");
return SearchService.getAllExhibitors(finalstring);
}
},
views: {
'header': {
templateUrl: 'headerde.htm',
controller:'appCtrl'
},
'main':{
templateUrl: 'fairde.htm',
controller: 'appCtrl'
}
}
})
Und die Fabrik:
.factory("SearchService", function($http, $q) {
var service = {
flatexhibitors : [],
datafairs : [],
getAllExhibitors : function (wop) {
var deferred = $q.defer();
var searchindex = wop;
var url = '../register/backend/databaseconnect/getexhibitors.php';
var config = {
params: {
search: searchindex
},
cache:true
};
$http.get(url, config).then(function (data) {
service.datafairs = data.data.rows;
for (var i in service.datafairs) {
service.flatexhibitors.push(service.datafairs[i].doc);
};
deferred.resolve(service.flatexhibitors);
}, function (error) {
console.log(error);
deferred.reject(error);
});
return deferred.promise;
}
}
return service;
})
verstehe nicht, warum Sie zwei separate Arrays müssen und zurück nicht nur 'Daten .data.rows 'in' then() ' – charlietfl