出于某种原因,当我在资源1和资源2之间切换时,我的控制器被双重调用.
这是代码:
的index.html
<!DOCTYPE html> <html ng-app="multiple_calls"> <head> <Meta charset="utf-8" /> <title>AngularJS Plunker</title> <link rel="stylesheet" href="style.css" /> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script> <script src="app.js"></script> </head> <body ng-controller="MainCtrl"> <a href="#res/1">1</a> <a href="#res/2">2</a> <div ng-view> </div> </body> </html>
app.js
var app = angular.module('multiple_calls',[]); app. config(['$routeProvider',function($routeProvider) { $routeProvider. when('/res/:id',{templateUrl: 'res.html',controller: 'res' }); }]); app.controller('MainCtrl',function($scope) { }); app.controller('res',function($scope,$routeParams) { console.log('resource called') $scope.id = $routeParams.id; });
res.html
{{id}}
http://plnkr.co/edit/HsCJmbllOcnlvlc1oiHa?p=preview
如果单击项目1然后单击2,您将看到“资源调用”打印3次:资源之间每次更改2次.
任何线索为什么会发生这种情况?
解决方法
发现一个完全相同的问题:
AngularJs: controller is called twice by using $routeProvider
- when('/res/:id',+ when('/res/:id/',