gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 20:07:23 24 4
gpt4 key购买 nike

我想开始使用 Angular 的 ui-router 而不是 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 配置中使用 namespace Controller ,以及一个嵌套路由(第二个选项卡):http://plnkr.co/edit/2DuSin?p=preview

template: 可以更改为 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>',
controller: 'SecondCtrl',
data: {}
});
});

Controller :

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

}]);

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

关于angularjs - 从 ngRoute/$routeProvider 迁移到 ui-router/$urlRouterProvider,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21946244/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com