gpt4 book ai didi

angularjs - 如何处理 AngularJS 应用程序中的路径管理

转载 作者:行者123 更新时间:2023-12-04 17:19:09 25 4
gpt4 key购买 nike

我有兴趣找出一种管理应用程序各个部分的路径(如在 URL 中)的智能方法。

如果您在 HTML(href 属性)、 Controller 和服务($location.path() 调用)中拥有它们,那么将 URL 从/login 更改为/auth 会非常麻烦。您必须浏览所有 JS 和 HTML 文件以查找对它的引用。

这应该怎么做?
我将路径对象视为 angular.constant它被注入(inject)到 HTML 文件的范围内,以便在 Controller 和服务中作为 JS 对象使用和引用,以便在一个地方保存它们。

这是一个很好的方法吗?有没有更好的办法?

谢谢。

最佳答案

我遇到了您描述的完全相同的问题。我的应用程序中到处都是硬编码的网址,更改任何内容都是一场噩梦。所以我决定想出一个好的解决方案。这就是我最终决定的。它可能并不完美,但到目前为止我还没有遇到任何问题。 PS。我的应用程序很大,所以有很多网址需要跟踪。

.constant('RoutePaths', {
login: {
login: '/login',
eula: '/login/eula',
noSubscription: '/no-subscription',
myAccount: '/my-account',
createAccount: '/my-account/create',
createAccountFromXID: '/my-account/update',
...
// more routes here
},
conreg: {
compInfo: '/bronze/companyInfo',
serviceArea: '/bronze/serviceArea',
licenses: '/bronze/licenses',
insuranceBonds: '/bronze/insuranceAndBonds',
certifiedReviews: '/silver/certifiedReviews',
certifications: '/silver/certifications',
yearsAndBBB: '/silver/yearsAndBBB',
...
// more routes here
},
....
// more objects here
}

因为我已经声明了 RoutePaths对象作为 constant ,我现在可以在我的应用程序的 config 中使用它模块与内置 $routeProvider像这样:
app.config(['$routeProvider','RoutePaths', function($routeProvider, RoutePaths){
var login = RoutePaths.login;
$routeProvider
.when(login.login, {templateUrl: '../partials/login/login.html', controller: 'LoginCtrl'})
.when(login.eula, {templateUrl: '../partials/login/eula.html', controller: 'EulaCtrl'})
.when(login.myAccount, {templateUrl: '../partials/login/account.html', controller: 'AccountCtrl'})
...
// more routes declared here
}]);

你可以注入(inject)相同的 RoutePaths依赖于您需要的任何 Controller 、服务、工厂、过滤器等:
.controller('LoginCtrl', ['$scope','RoutePaths', function($scope, RoutePaths){
$scope.paths = RoutePaths.login;
...
}]);

在您的 View 中,您可以使用以下方式绑定(bind)到这些路径:
<a ng-href="{{paths.myAccount}}">My Account</a>

然后我必须进行的任何更改,我都可以在 RoutePaths 中进行。不变,它们在我的应用程序中随处更新。它非常适合我的目的。您是在寻找更强大的东西还是对您有用?

关于angularjs - 如何处理 AngularJS 应用程序中的路径管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19955133/

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