AngularJS: ui-router Redirect vue sur la réussite & actualisation de la portée avec le nouveau contenu

Je suis de la migration de ng-vue ui-view.

Dans mon contrôleur, après avoir réussi à créer /mettre à jour /supprimer, je voudrais rediriger vers l'index de la vue avec la nouvelle mise à jour /création /suppression des données.

Je fais cela à l'aide de $state.go.

app.controller('AdminSupplierCreateController', ['$scope', '$state', 'Supplier', 
    function ($scope, $state, Supplier) {
        $scope.h1 = "Register a new Supplier";

        $scope.store = function()
        {
            Supplier.post($scope.supplier)
                .then(
                    function() {
                        console.log("Successfully Created Supplier");
                        $state.go('admin.supplier');
                    },
                    function(response) {
                        console.log("Error with status code: " + response.status);
                    }
                );
        };
}]);

Le problème est que lorsque l' $état est changé, le champ n'est pas mis à jour. Il semble que l'origine admin.supplier portée de données n'est pas en cours d'actualisation.

J'ai essayé de l'actualisation de la ui-view avec $state.reload() avant de définir le champ d'application de AdminSupplierIndexController.

app.controller('AdminSupplierIndexController', ['$scope', '$state', 'suppliers', 
    function ($scope, $state, suppliers) {
        $state.reload();
        $scope.suppliers = suppliers;
}]);

Faire cela permet de la requête get api/v1/suppliers, cependant il n'a pas fait de montrer les mises à jour de la portée, à moins que je soit frappé le bouton actualiser du navigateur manuellement ou naviguez jusqu'à un état différent de l'état, puis retourner à nouveau.

$stateProvider
    ...
    .state('admin.supplier', {
        url : "/supplier",
        templateUrl : 'templates/admin/supplier/index.html',
        controller: "AdminSupplierIndexController",
        resolve: {
            suppliers: ['Supplier', function(Supplier) {
                return Supplier.getList();
            }]
        }
    })
    .state('admin.supplier.create', {
        url : "/create",
        templateUrl : 'templates/admin/supplier/create.html',
        controller: "AdminSupplierCreateController"
    })

Solution:

app.controller('AdminSupplierCreateController', ['$scope', '$state', 'Supplier', 
    function ($scope, $state, Supplier) {
        $scope.h1 = "Register a new Supplier";

        $scope.store = function() {
            Supplier.post($scope.supplier)
                .then(
                    function() {
                        console.log("Successfully Created Supplier");

                                            //Force Reload on changing state
                                            $state.go('admin.supplier', {}, {reload: true});
                    },
                    function(response) {
                        console.log("Error with status code: ", response.status);
                    }
                );
        };
}]);

OriginalL'auteur Gravy | 2014-05-21