2017-06-17 8 views
0

ngStompを使用して、anglejsコントローラへのwebsocketサブスクリプションを配線しています。 1つのページに1つのコントローラーがあれば、正常に動作します。以前のdivに別のコントローラを追加すると、動作を停止します。同じページでngstompを使用している複数のanglejsコントローラ

これは同じエンドポイントにstompを2回接続しようとしているためですか?

私のコントローラの宣言は以下のとおりです。

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); 
    }); 
}); 

と1つのdivの中にあります:

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

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

は続きます

未処理の注文divを削除すると、ステータスコントローラが正常に機能します。 angularjsドキュメントを読んだのではなく、それを巻取上で実行した後

答えて

0

:P

は、ページ上で宣言2 NG-のアプリを持つことはできません。明らかに複数のコントローラを持つことができます。明らかにこれを構造化する多くの方法がありますが、2つのコントローラをモジュールに適用することで終わりました。

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要素内のコントローラーで:

<div ng-controller="OpenOrderController"> 

<div ng-controller="ExchangeController"> 
関連する問題