2017-06-17 43 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"> 
相關問題