2015-07-28 136 views
2

共享數據之間的共享過濾後的數據是一個主題在這裏討論了很多,我通過創建一個factory保存功能調用我們的API,當然還有我們的返回數據解決它。angularJS:控制器之間的控制器

angular.factory('polygonService', ['$resource', polygonService]); 

function polygonService($resource) { 


    var service = { 

     data: [], 

     api: $resource(
      'url', 
      { 
       cityID: '@id' 
      }, 
      { 
       get: { 
        method: 'JSONP', 
        params: { 
         callback: 'JSON_CALLBACK' 
        } 
       } 
      } 
     ) 


    } 


    return service; 

} 

現在,該服務中的data顯示在地圖上和列表中。這些是兩個單獨的指令&控制器。

列表指令允許用戶通過各種屬性過濾數據,但過濾後的數據僅是該列表指令的$範圍內使用。

我怎樣才能使過濾後的數據提供給映象控制器的$範圍?

我必須讓服務內filteredData財產和$留意是否從地圖控制器嗎?

+0

參加這個帖子一看我的回答: http://stackoverflow.com/questions/30975516/passing-updating-data-in-a-factory-from-one-controller-to-另外/ 30975802#30975802 – mggSoft

回答

0

您將需要通過服務暴露了過濾的結果,但你並不需要注意這一點。

從您的視圖控制器設置一個範圍變量爲您服務

$scope.polygonService = polygonService; 

然後,您可以從您的控制器訪問$ scope.polygonService.filteredData,或polygonService.filteredData和雙向綁定將工作如預期。

<li ng-repeat="data in polygonService.filteredData"> 
    {{ data }} 
</li> 
+0

謝謝!但我需要'$ watch'來更新我的第二個指令$ map變量,即地圖。不幸的是,當服務數據發生變化時,它不會更新。但是,是的,但我想。 – ProblemsOfSumit

+0

你可以提供一個運動員嗎? – Alex

+1

「你需要在半年後通過服務」 「公開過濾結果,我知道你的意思。 非常多'返回數據'或者其中的一個變種。並過濾服務中的數據 - 然後返回數據 - 可能通過'getData'方法。 – ProblemsOfSumit