簡體   English   中英

如何合並我的控制器AngularJS?

[英]How can I combine my controllers AngularJS?

我有我的MainCtrl(從$ routeProvider和html調用):

function MainCtrl($scope, $routeParams){
  //send data(see below) to AngularTemplate for apdate page
}

我有我的函數,該函數可獲取任何數據:

function getData($scope, $http){
  /*
  * Nav Data(here my navigate-structure fo site)
  */
  $http({method: 'GET', url: 'data/main.json'}).
  success(function(data){
    //work with data and send it to MainCtrl
  });
  /*
  * News Data(Here my news)
  */
  $http({method: 'GET', url: 'data/news.json'}).
  success(function(data){
    //work with data and send it to MainCtrl
  });
}

現在,我了解了如何使用。$ on和。$ broadcast將數據從一個Ctrl發送到另一個Ctrl。 但是getData不是Angular Controller(它是一個js函數),並且不會低估我的args($ scope和$ http)。 告訴我,請問如何在第一次加載頁面時調用getdata並將數據發送到MainCtrl。 另外,如果您知道的話,請告訴我MainCtrl我該怎么做,他只能從$ routeProvider呼叫。 現在首先從html(ng-controller)調用,然后從$ routeProvider調用。

將getData函數放入角度控制器中。 它將了解$ scope和$ http服務

或制作mainCtrl ....的原型方法set()並在其中傳遞$ scope.var = value

       MainCtrl.prototype = {
        set = function(value){
            $scope=value;

         }

    }

將數據獲取代碼包裝在服務中。 以下是兩個很好的SO答案,它們顯示了如何執行此操作:

上面的示例還顯示了如何將您創建的服務(例如, myService )注入到控制器中。 您可以根據需要將此服務注入到盡可能多的控制器中。 由於Angular服務是單例服務,因此無論您的服務中注入了多少個控制器,您的數據獲取代碼都將只有一個實例。

您的服務還可以緩存$ http請求的結果

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM