2016-07-28 23 views
0

anglejsファクトリを使用して値を設定しています。これはライブメッセージです。mainCtrl私は現在、$scope.eventにあるデータを取得したいと思います。ユーザー検索ログsearchLogs()で動作していますが、私はmainCtrlからデータを取得し続けています。ユーザーがいくつかのポイントでデータを取得したいので、モーダルウィンドウのデータを取得したらバインディングを停止する方法$scopeで利用可能な検索をユーザーが行うことができますか?anglejsファクトリを使用してgetおよびsetを使用する方法は?

factory.js

angular.module('App').factory('searchFactory', function ($http) { 
    'use strict'; 
    var logs; 
    return { 
     getDitLogs : function() { 
      return logs; 
     }, 

     setDitLogs : function (data) { 
      logs = data; 
     } 
    } 

}); 

mainCtrl.js

$scope.searchLogs = function() { 
    $scope.modalInstance = $uibModal.open({ 
     templateUrl: '/view/modals/searchModal.html', 
     controller:'SearchController' 
    }); 
    searchFactory.setDitLogs($scope.event); 
} 

childCtrl.js

$scope.event = searchFactory.getDitLogs(); 
    console.log(searchFactory.getDitLogs()); 

main.htmlを

答えて

1
<div class="col-md-12"> 
      <ul style="list-style: none;"> 
       <li ng-repeat="message in event track by $index"><span><strong>Log:</strong></span><span>{{message}}</span></li> 
      </ul> 
     </div> 

$scope.modalInstanceは、約束であるopenedというプロパティを持っています。 一つの方法は、解決すべきその約束を待つことで、その後、searchFactory.setDitLogs()が呼び出されないようにフラグを設定します。このソリューションは、私のために働いた

$scope.searchLogs = function() { 
if(!$scope.doNotSetDit){ 
    $scope.modalInstance = $uibModal.open({ 
     templateUrl: '/view/modals/searchModal.html', 
     controller:'SearchController' 
    }); 
    $scope.modelInstance.opened.then(function(){$scope.doNotSetDit =true}); 
    searchFactory.setDitLogs($scope.event); 

} }

+0

おかげで、別の解決策I found.copy(data)は新しいインスタンスを作成します。 – hussain

関連する問題