AngularJS控制器被调用了两次。
AngularJS控制器被调用了两次。
我对AngularJS还很新。我正在学习AngularJS,尝试跟随不同的教程。现在我正在处理一些代码。在这方面我有一个问题。我的代码如下:
index.html
AngularJS Application
route.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'); });
如果我运行这段代码,我会收到两次 `alert('Yes');` 的提示。
为什么我会收到两次提示?这是正常行为还是我做错了什么?
谢谢。
更新:
@Leo Farmer 我已经改变了index.html的结构,如下所示:
AngularJS Application
但是我仍然收到两次 `alert()` 的提示。实际上我关心的是“我是做对了还是做错了?”我认为收到两次 `alert()` 的提示意味着我做错了什么。
我的结构是否遵循良好的约定?
谢谢。
AngularJS控制器被调用两次的原因可能是由于页面加载和处理的时间问题导致代码被运行了两次。为了解决这个问题,可以尝试以下方法:
1. 将警告代码修改为在按钮或其他事件触发时执行。这样可以避免控制器被异步调用。
2. 尝试将JavaScript代码放在页面底部加载,以确保整个页面在JavaScript加载之前已经加载完毕。
3. 另一种方法是使用$timeout服务添加一个延时,在整个页面加载完毕后再运行警告代码。
需要注意的是,这个问题的出现并不是通常情况下控制器被多次调用的结果。它之所以被调用两次,是因为在代码中明确(虽然无意间)指示了这样的行为。
总之,通过采取上述方法,可以解决AngularJS控制器被调用两次的问题。
AngularJS controller被调用两次的问题是因为controller在body元素中被调用了一次(即alert number one),然后又被分配为pages/home.html的控制器(即alert two)。
解决方法是将controller从body元素中移除。建议将其从body元素中删除。
更新:不需要在div中添加ng-controller="main_controller",因为你已经在$routeProvider中添加了控制器。你只需要在一个地方调用它即可。
这就是我的情况下的答案,在删除body元素中的控制器后,问题解决了。谢谢!
6年后,这才是正确的答案...