【发布时间】:2013-06-14 14:35:09
【问题描述】:
我的 index.html 页面中有一个带有导航栏的 angularjs 应用程序:
<div class="navbar navbar-inverse navbar-fixed-top" ng-controller="NavCtrl">
<div class="navbar-inner">
<div class="container">
<ul class="nav">
<li>
<a href="#/">Home</a>
</li>
<li>
<a href="#/add">Add a contact</a>
</li>
<li>
<a href="#/users">Users</a>
</li>
<li>
<a href="#/agencies">Agencies</a>
</li>
<li>
<a ng-click="intro()">Help</a>
</li>
</ul>
</div>
</div>
</div>
这个 div 使用一个控制器,当我点击帮助链接时,它会调用我的控制器的 intro 方法。但是这个方法每次调用两次!!
这是我的控制器:
'use strict';
angular.module('myApp')
.controller('NavCtrl', function ($scope, $location) {
$scope.intro = function(){
if($location.path() != '/'){
toastr.warning("Warning.");
}else{
introJs().start();
}
}
});
有什么想法吗?..
这是完整的html:
<div class="navbar navbar-inverse navbar-fixed-top" ng-controller="NavCtrl">
<div class="navbar-inner">
<div class="container">
<ul class="nav">
<li ng-class="navClass('')">
<a href="#/">Home</a>
</li>
<li ng-class="navClass('add')">
<a href="#/add">Add a contact</a>
</li>
<li ng-class="navClass('users')">
<a href="#/users">Users</a>
</li>
<li ng-class="navClass('agencies')">
<a href="#/agencies">Agencies</a>
</li>
<li>
<a ng-click="intro()">Help</a>
</li>
</ul>
</div>
</div>
</div>
<div class="show-grid"></div>
<div class="container">
<div class="row" ng-view></div>
</div>
【问题讨论】:
-
你能做一个重现问题的小提琴吗?
-
当我介绍 Angular 的客户端路由时,我也开始注意到两次调用的控制器介绍方法。从您的 URL 看起来您也在使用它,所以我想知道它是否相关。您粘贴的 sn-p 是否在 ng-View 指令中的任何位置?
-
我已经编辑了帖子,我为所有带有 $routeProvider 的视图设置了 ng-view 指令。ng-controller 指令仅用于导航栏 ...
-
@Blackhole:对于小提琴我会尝试,但它有点复杂,因为我有一个 $routeProvider 很多控制器和许多局部视图,但我会尝试!
-
根据您的代码我无法重现该问题,这是JSBin
标签: angularjs angularjs-scope angularjs-routing