gpt4 book ai didi

javascript - DRY up View 中的逻辑以及 $routing

转载 作者:搜寻专家 更新时间:2023-11-01 04:36:08 25 4
gpt4 key购买 nike

我仍在学习 Angular,并已开始创建一个简单的网站。当 url 在该页面上时,我有路由和一些逻辑在菜单项上有一个事件类。我开始看到的问题是,如果我将 url 从/更改为/home,我必须在路由和 View 中更新它,以及查看它是否应该处于事件状态的逻辑。

我想知道是否有更好的方法让它变干?

我的 app.js 文件如下所示:

    angular.module('simpleApp', ['ngRoute'])
.config(['$routeProvider', '$locationProvider', function ($routeProvider, $locationProvider) {
$routeProvider
.when('/', {
templateUrl: 'views/home/index.html'
})
.when('/about', {
templateUrl: 'views/about/index.html',
controller: 'AboutController',
controllerAs: 'aboutCtrl'
})
.when('/services', {
templateUrl: 'views/services/index.html',
controller: 'ServicesController',
controllerAs: 'servicesCtrl'
})
.when('/contact', {
templateUrl: 'views/contact/index.html',
controller: 'ContactController',
controllerAs: 'contactCtrl'
})
.otherwise({
redirectTo: '/'
});
}]);

我的 index.html 的部分 View 如下所示:

<nav class="navbar navbar-inverse" ng-controller="NavController as navCtrl">
<div class="container-fluid">
<!-- Brand and toggle get grouped for better mobile display -->
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="/#/">SimpleApp</a>
</div>
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav">
<li ng-class="{ 'active': navCtrl.isActive('/')}">
<a href="/#/">Home</a>
</li>
<li ng-class="{ 'active': navCtrl.isActive('/about')}">
<a href="/#/about">About</a>
</li>
<li ng-class="{ 'active': navCtrl.isActive('/services')}">
<a href="/#/services">Services</a>
</li>
<li ng-class="{ 'active': navCtrl.isActive('/contact')}">
<a href="/#/contact">Contact Us</a>
</li>
</ul>
</div>
</div>
</nav>

如您所见,我在导航 Controller 上调用了 isActive 方法,但我必须始终确保我传入的 url 是正确的。

这是我的导航 Controller :

    angular.module('simpleApp')
.controller('NavController', function($scope, $location) {
this.isActive = function (url) {
return url === $location.path();
};
});

最佳答案

如果您不想重复自己,为什么不使用 ng-repeat

<ul class="nav navbar-nav">
<li ng-repeat="item in navbarLinks" ng-class="{ 'active': navCtrl.isActive(item.link)}">
<a href="/#{{item.link}}">{{item.text}}</a>
</li>
</ul>

我的意思是,不必重复自己就是它存在的原因。所以你不要重复自己。 ng-repeat 实际上非常适合那些您不想重复自己的情况。如果您想避免重复自己,我建议您使用它。我所说的“它”是指 ng-repeat。避免重复。

关于javascript - DRY up View 中的逻辑以及 $routing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32125128/

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