【问题标题】:angular controller multiple times角度控制器多次
【发布时间】:2015-06-26 00:20:26
【问题描述】:

我有一个带有角度的网页,我在其中使用 ngroute 重定向到 3 个页面。

modulo_angular.config(function($routeProvider){
                    //config y defi de las rutas
      $routeProvider.when("/", {
          controller: "appUOM",
          controllerAs: "apuom",
          templateUrl: "home.html"
          })
          .when("/descargas", {
          controller: "appSocket",
          controllerAs: "apsocket",
          templateUrl: "descargas.html"
          })
          .when("/opciones", {
          controller: "appPhenomena",
          controllerAs: "apphen",
          templateUrl: "opciones.html"
          });
      });

我有 3 个工厂和 3 个不同的控制器。每个工厂都与一个控制器相关,因此即使页面更改,我也可以保留数据。

在一页“descargas”中,我有从 ym node.js 服务器接收数据的套接字。这是控制器:

function controladorSocket($http, factoryController, socket){
  var vm = this;
  vm.mensajes = factoryController.getMensajes();
  socket.on('mensaje', function(data){
    console.log(data.message);
    factoryController.addMensaje(data.message);
  });
}

这就是套接字工厂:

modulo_angular.factory('socket', function ($rootScope) {
 var socket = io.connect();
return {
    on: function (eventName, callback) {
      socket.on(eventName, function () {
        var args = arguments;
        $rootScope.$apply(function () {
          callback.apply(socket, args);
        });
      });
    }
};
});

每次我从 descargas.html 切换到另一个页面并返回时,我都会收到与在那之前所做的更改一样多的套接字消息。

所以我认为我的问题来了,因为我的 socket.on('mensaje'... 函数应该转到另一个地方来避免这种情况。但我不知道该怎么做。

【问题讨论】:

    标签: angularjs sockets


    【解决方案1】:

    您必须在页面更改时手动销毁套接字:

    function controladorSocket($http, factoryController, socket){
      var vm = this;
      vm.mensajes = factoryController.getMensajes();
      socket.on('mensaje', function(data){
        console.log(data.message);
        factoryController.addMensaje(data.message);
      });
      this.$on('$destroy', function(){
        //destroy socket
      });
    }
    

    【讨论】:

    • 我得到这个错误:this.$on 不是你的函数的函数
    猜你喜欢
    • 2014-10-30
    • 1970-01-01
    • 2013-08-15
    • 2013-08-16
    • 1970-01-01
    • 2014-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多