2017-02-18 2 views
0

klicken Ich bilde eine Einzel Seite AnwendungAngularJS Aktualisiert Tabelle nach einer Verbindung mit Parametern

Meine config:

var app = angular.module('menuCardMaker', ['ngRoute']); 

app.config(function ($routeProvider, $locationProvider) { 
    $routeProvider 
    .when('/wines', { 
     templateUrl: 'templates/wine/wine.html', 
     controller: 'WineController' 
    }) 
    .when('/wines/delete/:id', { 
     templateUrl: 'templates/wine/wine.html', 
     controller: 'WineController' 
    }) 

Mein HTML:

 <table> 
     <tr> 
      <td class="head">Name</td> 
     </tr> 
     <tr ng-repeat="wine in winesFromStorage"> 
      <td>{{ wine.name }}</td> 
      <td><a ng-href="#/wines/delete/{{ wine.id }}" ng-click="remove()">Delete</a></td> 
     </tr> 
    </table> 

Seite Lasten auf URL (zum Beispiel) auf http://127.0.0.1:8080/#/wines/delete/1, wenn der Benutzer auf Löschen klickt. Es löscht den Datensatz in meinem LocalStorage, aber es "aktualisiert" meine Seite nicht so, wie ich es von meiner templateUrl in meiner Konfiguration erwarten würde.

Der Benutzer muss die Seite neu laden, bevor die Tabelle die korrekten Daten anzeigt. Irgendwelche Gedanken, die mich zu einer Lösung führen könnten?

Antwort

1

Nach dem Datensatz aus dem Speicher löschen, können Sie aktualisierte Array von Objekten mit dem Array in verwendet zuweisen ng-repeat

$scope.remove = function(){ 

    $scope.winesFromStorage = updatedLocalStorageObject; 

} 

diese Weise können Sie gewohnt haben, um die Seite neu zu laden und seit seinem Zweiweg es binded wird den Datenteil automatisch neu laden.

+0

:

.controller('WineController', ['$scope', '$location' function ($scope, location) { $scope.wines = ['wine1', 'wine2]; $scope.deleteWine = function(wineIndex){ // this should update the ng repeat list on your page delete $scope.wines[wineIndex]; // if you still want to redirect the user you could do // it like this: $location.path('/yoururlhere'); // of course this would load another route with another controller. //If you want to share the current wine list between two //controllers, you could create a wineListService where //you store the list. } }; 

ein Beispiel, wie Daten zwischen den Controllern zu teilen ist hier zu finden. Aber, meine Seite lädt auf/wines/mit den Tabellen und wenn sie auf gelöscht gedrückt wird, verweist sie auf/wines/delete/1. Es sieht so aus, als ob es auf/wines/bleibt und aktualisiert die Daten nicht. Irgendwelche Ideen? Ich mag diese Idee besser als die oben! – Bilzard

Verwandte Themen