Migration de ngRoute / $ routeProvider vers ui-router / $ urlRouterProvider

Je veux commencer à utiliser Angulaire de l'interface utilisateur du routeur au lieu de ngRoute. À l'origine, mon application config ressemblait

myApp.config(["$routeProvider",
    function($routeProvider) {
        $routeProvider
            .when("/search", {
                templateUrl: "partials/customerSearch.html"
            })
            .when("/home", {
                templateUrl: "partials/home.html"
            })
            .when("/login", {
                templateUrl: "partials/login.html",
                controller:  "LoginCtrl"
            })
            .otherwise({
                redirectTo: "/home"
            })
        ;
    }
]);

J'ai échangé les bibliothèques, et changé la configuration. Je comprends que je pourrait toujours utiliser $routeProvidermais qui semble comme un héritage solution de contournement.

myApp.config(["$urlRouterProvider", "$stateProvider",
    function($urlRouterProvider, $stateProvider) {
        $urlRouterProvider
            .when("/search", "partials/customerSearch.html")
            .when("/home",   "partials/home.html")
            .when("/login",  "partials/login.html")
            .otherwise("/home")
        ;
        $stateProvider
            .state({
                name:        "customer",
                url:         "/customer/:username",
                templateUrl: "partials/customer.html"
            })
            .state({
                parent:      "customer",
                name:        "details",
                url:         "/details",
                templateUrl: "partials/customerDetails.html"
            })
        ;

    }
]);

Cela me donne des erreurs qui semblent indiquer $digest est coincé dans une boucle. Je soupçonne que le .otherwise("/home") règle. Suis-je en précisant le handlers correctement, comme si elles étaient modèle d'Url?

Si je commentaire-le .when()s, rien ne fonctionne sauf "/customer/:username". Dois-je avoir un état défini pour chaque itinéraire? Si oui, quel est l'intérêt d'avoir les deux $urlRouterProvider et $stateProvider? Posée différemment, qu'est-ce que chaque censé faire?

source d'informationauteur N13