Meine Webanwendung ist eine CRUD, in der eine Liste der Benutzer und Vorgänge enthalten ist (Einfügen, Löschen, ECC). Um einen Benutzer hinzuzufügen, müssen Sie die Felder eines Modales ausfüllen (bootstrap - ui). Das Problem besteht darin, dass die Liste nach dem Einfügen nicht automatisch aktualisiert wird.Tabelle nach einem Einfügen/Aktualisieren in AngularJS aktualisieren
Dies ist mein Code: HTML:
...
ng-repeat="p in list"
...
JS:
var app = angular.module('app', [ 'ui.bootstrap', 'ngResource' ]);
app.controller("FirstController", [
'$scope',
'ElementFactory',
'ElementsFactory',
'$uibModal',
function($scope, ElementFactory, ElementsFactory, $uibModal) {
$scope.list = ElementsFactory.query();
$scope.add = function() {
var modalAddInstance = $uibModal.open({
animation : true,
templateUrl : 'addModal.html',
controller : 'addModalController',
resolve : {
element : function() {
return $scope.element;
}
}
});
};
} ]);
app.controller("addModalController", function($scope, $uibModalInstance,
ElementsFactory, element) {
$scope.element = element;
$scope.addCancel = function() {
$uibModalInstance.dismiss('cancel');
};
$scope.addElement = function() {
ElementsFactory.create($scope.element, function(){
//REFRESH TABLE HERE **********************
$uibModalInstance.close();
});
};
});
app.factory('ElementsFactory', [ '$resource', function($resource) {
return $resource('rest/all', {}, {
query : {
method : 'GET',
isArray : true
},
create : {
method : 'POST'
}
});
} ]);
Sobald das neue Element hinzufügen, das ist nach Aktualisierung der Seite nur sichtbar und nicht automatisch. Was ist der Code, der eingefügt werden soll, wo ich Ihnen angezeigt habe, dass die Tabelle automatisch aktualisiert wird?
Ich dachte an das Schreiben: $ scope.list = ElementsFactory.query(); nach dem Einfügen, aber es funktioniert nicht, weil es den Umfang nicht übernimmt. – fuerteVentura22
Sie können $ rootScope. $ Broadcast von modalcontroller hinzufügen, sobald sie eingefügt wurde, und maincontroller diese Broadcast hören. Beim Hören des Hauptcontrollers führen Sie einen Query-Aufruf von der Element-Factory aus (setzen Sie den Brodacast direkt auf // REFRESH TABLE HIER). – Don
mmm .. können Sie den Code posten? – fuerteVentura22