我正在尝试在我的AngularJS应用中实现KonamiJS,当用户点击键盘上的Konami代码时,该应用会打开BootstrapUI模式对话框。脚本正常工作,但它已经发射两次,我似乎无法弄清楚原因。这是我在主控制器中包含的所有内容,因此它可以从任何地方触发。在主控制器中,我还有一个Angular视图:
<body ng-app="App" ng-controller="MainCtrl">
<div id="main-content" ng-view="" class="content"></div>
</body>
angular.module('App')
.controller('MainCtrl', function ($scope, $modal, $log) {
$scope.animationsEnabled = true;
var credits_page = new Konami();
credits_page.code = function() {
$modal.open({
animation: $scope.animationsEnabled,
templateUrl: 'views/credits.html',
controller: 'ModalInstanceCtrl'
});
console.log("Trigger");
}
credits_page.load();
});
然后我有一个模态控制器,它与之对话:
angular.module('App')
.controller('ModalInstanceCtrl', function ($scope, $modalInstance) {
$scope.ok = function () {
$modalInstance.close($scope.selected.item);
};
$scope.cancel = function () {
$modalInstance.dismiss('cancel');
};
});
这里只是我的脚本加载顺序:
<script src="scripts/app.js"></script>
<script src="scripts/controllers/main.js"></script>
<script src="scripts/controllers/modal.js"></script>
<script src="scripts/controllers/carousel.js"></script>
<script src="scripts/controllers/contact.js"></script>
<script src="scripts/particles.js"></script>
<script src="scripts/konami.js"></script>
我认为它与视图开关有关,但我无法确定究竟是什么导致它。
答案 0 :(得分:2)
你必须在MainCtrl
定义中提及ng-controller="MainCtrl"
,所以基本上你的MainCtrl
控制器正在进行两次注册。
您需要从body标签中删除{{1}},这在实例化{{1}}两次时基本上似乎是多余的。
答案 1 :(得分:0)
检查您的模板和路线,您可能已经声明控制器两次
模板中的: ng-controller =&#34; MainCtrl&#34;
路线:控制器:&#39; MainCtrl&#39;