2016-08-08 12 views
0

Frage nach dem ich meine Daten posten Ich habe eine kleine HTML-Tabelle, die meine Daten zeigt aber meine Daten nicht angezeigt, bis ich die Seite neu laden Hilfe, damit dies automatisch meine Daten zeigen, nachdem ich abschicke wird sehr geschätzt werden.Nach der Antwort laden Daten in angularjs

ist hier mein angular_stuff

var dim = angular.module('Dim', ['ngResource']); 


dim.config(['$httpProvider', function($httpProvider) { 
    $httpProvider.defaults.xsrfCookieName = 'csrftoken'; 
    $httpProvider.defaults.xsrfHeaderName = 'X-CSRFToken'; 
    $httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded'; 
}]); 

dim.config(function ($interpolateProvider) { 
    $interpolateProvider.startSymbol('{[{'); 
    $interpolateProvider.endSymbol('}]}'); 
}); 

dim.factory("Dim", function ($resource) { 


    return $resource("_dims.html", { pk: 'pk' }, { 
     index: { method: 'GET', isArray: true, responseType: 'json' }, 
     update: { method: 'POST', responseType: 'json' }, 
     delete: { method: 'DELETE', headers: { 'X_METHODOVERRIDE': 'DELETE' } }, 
    }); 
}) 


dim.service('dataService', function() { 
    this.data = {} 
    this.data.dimMap = new Array(); 
    this.data.dimMap[""] = "description"; 
}); 


//dim.controller("DimController", function($scope, $http, Dim) { 
dim.controller("DimController", function ($scope, $http, Dim) { 
    $scope.dims = Dim.index() 
    //$scope.dims = dataService.data.dimMap; 

    $scope.addDim = function() { 
     dim = Dim.save($scope.newDim) 
     //My guess is I need something here to reload my data ??? 
     $scope.dims.push(Dim) 
     $scope.newDim = {} 


    } 

    $scope.deleteDim = function (index) { 

     dim = $scope.dims[index] 
     Dim.delete(dim) 
     $scope.dims.splice(index, 1); 
    } 
    $scope.newField = {}; 

    $scope.editDim = function (field) { 
     window.console.log($scope.dims[field]); 
     $scope.editing = $scope.dims.indexOf(field); 
     $scope.newField[$scope.editing] = angular.copy(field); 
    } 
}) 

Bild einreichen Nach After Submit

Daten zeigt nur, wenn ich eine manuelle Seite realod [Manual Page Reload[2]

Antwort

2

Dim.save ist asynchrone so, wenn Sie $scope.dims.push(dim) aufrufen, wird dim noch nicht

Die Lösung gespeichert ist, den Erfolg Rückruf des Versprechens zu

$scope.addDim = function() { 
    Dim.save($scope.newDim).$promise.then(function(dim) { 
     $scope.dims.push(dim); 
     $scope.newDim = {}; 
    }); 
} 
+0

Danke, das hat funktioniert! @ oliv37 – Snowman08

+0

@ Snowman08 - Ich denke, Sie sollten '$ scope.dims = Dim.index()' anstelle von '$ scope.dims.push (dim);' innerhalb $ Versprechungsfunktion abfragen, dies wird Sie aktualisierte Details aus der DB erhalten und wird Daten über alle Benutzer pflegen – Aks1357

+0

Es ist nicht sinnvoll, die Datenbank erneut abzufragen, da die Post-Anfrage Ihnen das erzeugte dim von der db zurückgibt, können Sie einfach '$ scope.dims.push (dim);' –

1

hinzufügen $ scope.dims = Dim .index() am Ende von $ scope.addDim Funktion. Es wird einen Anruf tätigen und Sie erhalten die Daten.

+0

Dies funktioniert zu verwenden. @Alexis Toby danke! – Snowman08

Verwandte Themen