###前提・実現したいこと
AngularJSでUI BootstrapのuibModalを使った処理しています。
$uibModal.open()時に、パラメータcontrollerを指定して、
別のコントローラでそのmodalの処理を捌くことを考えています。
###発生している問題
$uibModal.open()で指定したcontroller内で、
uibModalがopenしたらSocket.IOを使ってサーバにパケットを送信する様に作っており、
その応答をそのcontrollerで捌くようにしています。
しかし、どうやら、サーバからのレスポンスは1回きりなのに(サーバのログから判断,1度しか送信していない)、
当該controllerをopenした回数が増えるにつれて、
open回数:応答を捌いた回数 1回目:1回(ログメッセージ1個) 累計1個 2回目:2回(ログメッセージ2個追加) 累計3個 3回目:3回(ログメッセージ3個追加) 累計6個 4回目:4回(ログメッセージ4回追加) 累計10個 …
といった様に、何回も応答パケットを捌いている様なのです。
恐らく、controllerのインスタンスが破棄されていない等の理由で、
open()の度にインスタンスが1つずつ増えていき、
捌く回数もその分増えていっているという現象なのでしょうが、
どうすれば応答を捌く回数を1回にできるのでしょうか。
宜しくお願い致します。
###該当のソースコード
抜粋
Javascript
1メインのコントローラ内にて... 2var modalInstance = $uibModal.open({templateUrl:"~~",scope:$scope, 3 backdrop:true,size:"lg", 4 controllerAs:"dlg", 5 controller:"ModalController", 6 bindToController:true, 7 resolve: { 8 params: function(){ 9 return { 10 …略 11 }; 12 } 13 }, 14 windowClass:"~~~"}); 15modalInstance.rendered.then(function(){ 16}); 17modalInstance.result.then( 18function(result){ 19}, 20function(result){ 21}); 22… 23 24 25.controller('ModalController',['$scope','$rootScope','socketio','$uibModalInstance','params','$uibModal', 26 function($scope,$rootScope,socketio,$uibModalInstance,params,$uibModal){ 27 … 28 socketio.emit(…); 29 … 30 socketio.on("publish",function(data){ 31 if(data.type == "test"){ 32 //socketio.emit()の応答をここで処理 33 } 34 }); 35… 36}])
###補足情報(言語/FW/ツール等のバージョンなど)
AngularJS 1.5.8
UI Bootstrap 2.1.4
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。