モジュールルート:
var switchModule = angular.module('switchModule', []);
switchModule.config(['$routeProvider', function($routeProvider) {
$routeProvider.
when('/build-content', {templateUrl: 'build-content.html', controller: BuildInfoController});
}]);
コントローラ:
function BuildInfoController($http, $scope){
alert("hello");
}
HTML:
<html ng-app="switchModule">
...
<body>
<ul>
<li><a href="#build-content"/></a></li>
</ul>
<div class="ng-view"></div>
</body>
...
ハイパーリンク ''をクリックするたびに、 'BuildInfoController'が2回呼び出されます。ここに何かが足りませんか?
私は同じ問題を抱えていましたが、ルーティングに愚かなバグがあるようです。何らかの種類のリダイレクトが行われています。
それを修正するために、hrefにスラッシュを追加しました:
<li><a href="#/build-content/"></a></li>
あなたにとってもそれが解決することを願っています。
今日も同じ問題に直面しました。 $ routeProviderおよびHTMLにコントローラー名を追加しました。
$routeProvider
.when('/login', {
controller: 'LoginController',
templateUrl: 'html/views/log-in.html'
})
そして私の見解では
<div class="personalDetails" ng-controller="LoginController"> </div>
ビューまたはルートプロバイダーからコントローラー名を削除できます。
同様の問題がありました。ルートに末尾のスラッシュを追加しましたが、リンクには追加できませんでした。
$routeProvider.
when('/build-content/',...);
このマークアップで
<li><a href="/build-content">Content</a></li>
そして、AngularJSはブラウザのURLを$ routeProviderで定義されているものに修正します。
奇妙なことに、逆ではなく、リンクではなく、ルートでは末尾のスラッシュで動作するようです。末尾のスラッシュdo n'tが解決に一致し、コントローラーが2回呼び出されない限り、そうです!
私の場合、2つのng-viewディレクティブがありました。私はそれをラップしようとしましたが、意図せずに複製しました:
<div class="ng-view">
<div ng-view></div>
</div>
ラッパーを削除し、修正しました。
存在する場合、テンプレートページからng-controller
ディレクティブを削除します。
私は同じ問題を抱えていて、もしあなたがangular=.
私の場合、_<body ng-app>
_がありましたが、angular.bootstrap(document,['app'])
もあり、コントローラーの二重初期化を引き起こしました。
これが誰かの時間をいくらか節約できることを願っています。
私もcustomDirectiveで同様の問題を抱えており、意図的にコントローラーを複製しました。
<html>
<body ng-app="MyApp" ng-controller="MyDirectiveCtrl">
<my-directive></my-directive>
</body>
</html>
angular.directive('myDirectivie', [function() {
return {
restrict: 'E',
controller: 'MyDirectiveCtrl',
...
}
}]);
ボディレベルでng-controllerタグを削除して解決しました
あなたは複数のUIビューを持っているので
コントローラーをDOMの複数の要素に追加できるため、これが行われた場合にこの問題が発生する可能性があります。 :
<div id="myDiv1" ng-controller="myController" ....></div>
....
<div id="myDiv2" ng-controller="myController" ....></div>
単一状態の部分ビューごとにSomeControllerの宣言がありました。これにより、イベントが重複して発生しました。
.state('chat', {
url: '/',
views: {
'content@': {
templateUrl: 'views/chat_wv1.html',
controller: 'ChatController'
},
'form@': {
templateUrl: 'views/chat_wv_placeholder.html',
controller: 'ViewController'
},
'sidePanel@': {
templateUrl: 'views/sidePanel_wv.html'
/* removing this part solved my issue*/
/*controller: 'ChatController'*/
}
}
})
これが他の人の助けになることを願っています。