2017-06-17 42 views
0

我正在使用ngStomp将websocket订阅连接到angularjs控制器。当我在页面上有一个控制器时,它可以正常工作。当我在较早的div中添加另一个控制器时,它停止工作。在同一页面上使用ngstomp的多个angularjs控制器

这是因为它试图连接两次stomp到相同的端点?

我控制器声明是:

var market = 'all'; 
var orderApp = angular.module('openOrderApp', ['ngStomp']); 
orderApp.controller('openOrderController', function ($stomp, $scope) { 
    $stomp.connect('https://localhost/marketdata-websocket', {}) 
     .then(function (frame) { 
      console.log('Subscribing to /topic/openOrders'); 
      var subscription = $stomp.subscribe('/topic/openOrders', 
       function (payload, headers, res) { 
         $scope.exchanges = payload; 
         $scope.$apply($scope.orders); 
       }); 
      $stomp.send("/app/openOrders", market); 
    }); 
}); 

var market = 'all'; 
var statusApp = angular.module('statusApp', ['ngStomp']); 
statusApp.controller('statusController', function ($stomp, $scope) { 
    $stomp.connect('https://localhost/marketdata-websocket', {}) 
     .then(function (frame) { 
      console.log('Subscribing to /topic/exchangeStatus'); 
      var subscription = $stomp.subscribe('/topic/exchangeStatus', 
       function (payload, headers, res) { 
         $scope.exchanges = payload; 
         $scope.$apply($scope.exchanges); 
       }); 
      $stomp.send("/app/exchangeStatus", market); 
    }); 
}); 

在一个DIV有:

<div class="openOrders row" ng-app="openOrderApp" ng-controller="openOrderController"> 

依次为:

<div class="exchangeStatus row" ng-app="statusApp" ng-controller="statusController"> 

当我删除打开的订单div时,状态控制器工作正常。

回答

0

阅读angularjs文档,而不是账面上的即兴发挥后:P

不能有一个页面上声明了两个NG-应用。显然可以有多个控制器。显然有很多方法来构造这个,但我最终将两个控制器应用到模块。

var app = angular.module('app', ['ngStomp']); 
var controllers = {}; 
controllers.OpenOrderController = function ($stomp, $scope) { 
    console.log("Creating order controller"); 
    etc... 
}; 
controllers.ExchangeController = function ($stomp, $scope) { 
    console.log("Creating exchange controller"); 
    etc... 
}; 
app.controller(controllers); 

然后在html标记

<html ng-app> 

而且在申报单控制器:

<div ng-controller="OpenOrderController"> 

<div ng-controller="ExchangeController"> 
相关问题