gpt4 book ai didi

javascript - 使用 Angular js 进行路由,其他 javascript 不适用于路由选项卡

转载 作者:行者123 更新时间:2023-11-28 15:20:12 25 4
gpt4 key购买 nike

我正在使用 angularjs 开发一个单页应用程序。路由工作正常,并且我的 javascript 针对不在 ng-view 中的元素,就像一个魅力。但是,用于 ng-view 内元素的 JavaScript 根本不起作用。

例如,当我单击导航菜单时,JavaScript 运行良好并且菜单背景颜色发生变化,但是如果我导航到 one.html 并单击链接,则根本不会触发 JavaScript .

index.html

<!DOCTYPE html>
<html>
<head>
<!-- Load Angular Js -->
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.3/angular.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.3/angular-route.min.js"></script>
<script src="route.js"></script>
</head>
<body ng-app="single-page-app">
<div class="container">
<div class="row">
<div class="col-md-12">
<div ng-controller="cfgController">
<nav class="navbar navbar-default">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
<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="#">Navigation</a>
</div>
<div id="navbar" class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li><a href="#/1">One</a></li>
<li><a href="#/2">Two</a></li>
<li><a href="#/3">Three</a></li>
<li><a href="#/4">Four</a></li>
</ul>
</div>
</div>
</nav>
</div>
</div>
</div>
<div ng-view>

</div>
</div>

<!-- JavaScript placed at bottom for faster page loading times -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
<script>
$('.navbar-nav>li>a').click(function() {
$('.navbar-nav>li').css('background', '#fcfcfc');
$(this).parent().css('background', '#337ab7');
});

$('.test').click(function() {
alert('Working!');
})
</script>

route.js

var app=angular.module('single-page-app',['ngRoute']);
app.config(function($routeProvider){
$routeProvider
.when('/1',{
templateUrl: 'one.html'
})
.when('/2',{
templateUrl: 'two.html'
})
.when('/3',{
templateUrl: 'three.html'
})
.when('/4',{
templateUrl: 'four.html'
})
});
app.controller('cfgController',function($scope){

});

one.html

<div class="row">
<div class="col-md-12">
<a href="#" class="test">Test Js</a>
</div>
</div>

最佳答案

您的 ng-view 位于任何 Controller 之外。

您必须为您的路线(部分 View )定义 Controller ,如下所示:

var app=angular.module('single-page-app',['ngRoute']);
app.config(function($routeProvider){
$routeProvider
.when('/1',{
templateUrl: 'one.html',
controller: 'oneCtrl'
})
.when('/2',{
templateUrl: 'two.html',
controller: 'twoCtrl'
})

.when('/3',{
templateUrl: 'three.html',
controller: 'threeCtrl'
})
.when('/4',{
templateUrl: 'four.html',
controller: 'fourCtrl'
})
});
app.controller('cfgController',function($scope){

});
app.controller('oneCtrl',function($scope){

});
app.controller('twoCtrl',function($scope){

});
app.controller('threeCtrl',function($scope){

});

之后,您可以为相应 Controller 中的某些 View 执行 JavaScript。您的路由逻辑将确保您在 ng-view 中注入(inject)的每个部分 View 都使用为该 View (或模板)定义的 Controller 。

关于javascript - 使用 Angular js 进行路由,其他 javascript 不适用于路由选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31857170/

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