Ich habe eine Ionic-App in Entwicklung, und ich habe einen ungewöhnlichen Fehler auftreten. Ich habe eine Haupt „Jobs“ Vorlage, die der aktuelle Benutzer alle ihre Jobs sehen, die ihnen zugewiesen wurden:ng-repeat nicht aktualisieren nach der Suche
<ion-view cache-view="false" ng-controller="JobsCtrl">
<ion-content>
<ion-list>
<ion-item ng-repeat="job in jobs" class="item-icon-right item-text-wrap">
<a href="#" style="text-decoration:none; color: #444;" ng-click="loadJob(job.JobId)">
{{job.JobId}} - {{job.Surname}} - {{job.Suburb}} - {{job.JobType}}<i class="icon ion-chevron-right icon-accessory"></i>
</a>
</ion-item>
</ion-list>
</ion-content>
</ion-view>
Diese Ansicht bevölkert ist, etwa so:
$http.get(ApiEndpoint.url + '/GetJobs').then(function (resp) {
$scope.jobs = resp.data;
$ionicLoading.hide();
}, function (err) {
//console.error('ERR', err);
// err.status will contain the status code
});
Es gibt eine Suchfeld am oberen Rand der Vorlage, die, wenn sie abgefeuert, GETs einfach eine neue Liste der Aufträge mit einem Suchbegriff als Parameter:
var searchText = $scope.data.SearchText;
$ionicLoading.show({
template: '<p>Searching...</p><ion-spinner></ion-spinner>'
});
$http.get(ApiEndpoint.url + '/GetJobs/' + encodeURIComponent(searchText)).then(function (resp) {
$timeout(function() {
$scope.jobs = resp.data;
});
$ionicLoading.hide();
}, function (err) {
$ionicLoading.hide();
//console.error('ERR', err);
// err.status will contain the status code
});
Was geschieht aber, dass die Ionen Liste wird nicht aktualisiert, wenn $ s cope.jobs erhält die neuen Daten. Ich weiß, dass das GET erfolgreich war (über einen Paket-Sniffer). Ich habe viel nach der Antwort gesucht (daher der $ Timeout-Aufruf) - ich habe auch versucht, $ scope anzuwenden. $ Apply(); direkt nach dem $ scope.jobs = resp.data; wie einige Seiten vorgeschlagen haben, ohne Glück. Irgendwelche Ideen, wie ich es bekommen kann, um die ng-Wiederholung richtig zu wiederholen?
Vielleicht könnten Sie $ Uhr verwenden, dann dort Ihre get-Funktion verwenden. Lassen Sie das Modell der Sammlung aktualisieren. – alphapilgrim
Entschuldigung, wenn das eine dumme Frage ist (noch relativ neu bei Angular/Ionic), aber wird das funktionieren, wenn der Benutzer auf einen "Suchen" -Button klicken muss? Wird $ watch wissen, wann man feuert? –
Können Sie die Ausgabe von 'resp.data' einfügen? – user1027620