AngularJS 控制器被调用两次

Foy*_*sal 2 javascript angularjs

我是 AngularJS 的新手。我正在学习 AngularJS。我正在尝试遵循不同的教程。我现在使用一些代码。我有一个关于这方面的问题。我的代码如下

索引.html

<html ng-app="main_app">
    <head>
        <title>AngularJS Application</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width">   
        <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.25/angular.min.js"></script>
        <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.25/angular-route.js"></script>
        <script src="js/route.js"></script>
    </head>
    <body ng-controller="main_controller">
        <div ng-view></div>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

路由.js

var app = angular.module('main_app',['ngRoute']);

app.config(function($routeProvider)
{
   $routeProvider

   // route for the home page
   .when('/', {
               templateUrl : 'pages/home.html',
               controller  : 'main_controller'
            });
});

app.controller('main_controller', function($scope) 
{
    alert('Yes');        
});
Run Code Online (Sandbox Code Playgroud)

如果我运行这段代码,我会得到alert('Yes');两次。

为什么我两次收到此警报?这是正常行为还是我做错了什么??

谢谢

更新

@Leo Farmer我改变了index.html 的结构如下

<html>
    <head>
        <title>AngularJS Application</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width">   
        <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.25/angular.min.js"></script>
        <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.25/angular-route.js"></script>
        <script src="js/route.js"></script>
    </head>
    <body>
        <div ng-app="main_app">
            <div ng-controller="main_controller">
                <div ng-view></div>
            </div>
        </div>                
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

但我仍然收到alert()两次。其实我关心的是“我做错了还是做对了??” 我认为得到alert()两次意味着我做错了什么。

我的结构是否遵循良好的约定?

谢谢

Leo*_*mer 5

您的控制器被调用两次。您将它放在您的 body 元素中(这是第一个警报),然后您还将其分配为您的 pages/home.html 的控制器,您将其称为您的部分(这是第二个警报)。

您的 body 元素中不需要它。我建议你把它从那里拿走。