angularjs – 从ngRoute / $routeProvider迁移到ui-router / $urlRouterProvider

我想开始使用Angular的ui路由器而不是ngRoute.最初,我的应用配置看起来像
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"
            })
        ;
    }
]);

我换了图书馆,改变了配置.我知道我仍然可以使用$routeProvider,但这似乎是一种遗留的解决方法.

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"
            })
        ;

    }
]);

这给我错误,似乎表明$digest被困在一个循环中.我怀疑.otherwise(“/ home”)规则.我正确地指定了处理程序,就好像它们是模板URL一样吗?

如果我注释了.when(),除“/ customer /:username”之外没有任何作用.我必须为每条路线定义一个状态吗?如果是这样,那么两个$urlRouterProvider和$stateProvider有什么关系呢?当被问及不同的时候,每个人应该做什么?

这是一个基本的例子,我做了一段时间,在ui-router config和&一个嵌套路由(第二个选项卡): http://plnkr.co/edit/2DuSin?p=preview

模板:可以改为templateUrl:
指向HTML文件.

var app = angular.module('plunker',['ui.bootstrap','ui.bootstrap.tpls','ui.router']);
app.config(function($stateProvider,$urlRouterProvider) {
$urlRouterProvider.otherwise("/");
$stateProvider
    .state('state1',{
      url: "/",template: 'Hello from the first Tab!',controller: 'FirstCtrl',data:{}
    })
    .state('state2',{
      url: "/route2",template: 'Hello from the 2nd Tab!<br>' +
                '<a ui-sref="state2.list">Show List</a><div ui-view></div>',controller: 'SecondCtrl',data: {}
    })
      .state('state2.list',{
        url: '/list',template: '<h2>nest list state</h2><ul><li ng-repeat="thing in things">{{thing}}</li></ul>',data: {}
      });
});

控制器:

app.controller('FirstCtrl',['$scope','$stateParams','$state',function($scope,$stateParams,$state){

}]);

app.controller('SecondCtrl',$state){
    $scope.things = ["A","Set","Of","Things"];
}]);

相关文章

ANGULAR.JS:NG-SELECTANDNG-OPTIONSPS:其实看英文文档比看中...
AngularJS中使用Chart.js制折线图与饼图实例  Chart.js 是...
IE浏览器兼容性后续前言 继续尝试解决IE浏览器兼容性问题,...
Angular实现下拉菜单多选写这篇文章时,引用文章地址如下:h...
在AngularJS应用中集成科大讯飞语音输入功能前言 根据项目...
Angular数据更新不及时问题探讨前言 在修复控制角标正确变...