我理解AngularJS会运行一些代码两次,有时甚至更多,比如$watch事件,不断检查模型状态等.
不过我的代码:
function MyController($scope, User, local) {
var $scope.User = local.get(); // Get locally save user data
User.get({ id: $scope.User._id.$oid }, function(user) {
$scope.User = new User(user);
local.save($scope.User);
});
//...
Run Code Online (Sandbox Code Playgroud)
执行两次,将2条记录插入我的数据库.我显然还在学习,因为我多年来一直在抨击这个!
出于某种原因,当我在资源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>
Run Code Online (Sandbox Code Playgroud)
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;
});
Run Code Online (Sandbox Code Playgroud)
res.html
{{id}}
Run Code Online (Sandbox Code Playgroud)
http://plnkr.co/edit/HsCJmbllOcnlvlc1oiHa?p=preview
如果单击项目1然后单击2,您将看到"资源调用"打印3次:资源之间每次更改2次.
任何线索为什么会发生这种情况?
我已经有一段时间没有这个问题了,无法弄明白.基本上,如果"房间"中有一个人,我试图触发Angular Modal,当另一个人进入'Room'时将其删除.我遇到的问题是'socket.in(room).emit('join',room)'在一个连接上被触发两次,这会冻结模态.任何想法将不胜感激.如果需要,我可以发布更多代码.
io.sockets.on('connection', function (socket) {
initcount += 1;
if (initcount % 2 === 1) {
roomcount += 1;
room = roomcount.toString();
roomList[room] = {user1: socket.id};
} else {
roomList[room].user2 = socket.id
}
socket.join(room);
socket['room'] = room;
socket.in(room).emit('join', room) //being triggered twice and freezing.
Run Code Online (Sandbox Code Playgroud)
...
我是 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> …Run Code Online (Sandbox Code Playgroud)