相关疑难解决方法(0)

两次对抗AngularJS执行控制器

我理解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条记录插入我的数据库.我显然还在学习,因为我多年来一直在抨击这个!

angularjs

529
推荐指数
9
解决办法
17万
查看次数

Angularjs:Controller被多次调用

出于某种原因,当我在资源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次.

任何线索为什么会发生这种情况?

javascript controller angularjs

7
推荐指数
1
解决办法
2万
查看次数

Socket.IO事件被触发两次

我已经有一段时间没有这个问题了,无法弄明白.基本上,如果"房间"中有一个人,我试图触发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)

...

socket.io

2
推荐指数
1
解决办法
2799
查看次数

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> …
Run Code Online (Sandbox Code Playgroud)

javascript angularjs

2
推荐指数
1
解决办法
5794
查看次数

标签 统计

angularjs ×3

javascript ×2

controller ×1

socket.io ×1