1

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 関数です)、私の引数 ($scope と $http) を理解していません。getdata を呼び出して最初のページを読み込み、データを MainCtrl に送信する方法を教えてください。また、知っている場合は、私の MainCtrl で何ができるか教えてください。彼は $routeProvider からのみ呼び出します。最初は html(ng-controller) から呼び出され、その後 $routeProvider から呼び出されます。

4

2 に答える 2

0

getData関数を角度コントローラー内に配置します。$scopeと$httpサービスを理解します

または、mainCtrl ....のプロトタイプメソッドset()を作成し、それに$ scope.var=valueを渡します。

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

         }

    }
于 2013-01-24T14:51:03.770 に答える
0

データ取得コードをサービスにラップします。これを行う方法を示す2つの良いSO回答があります:

上記の例は、作成したサービス (例: myService) をコントローラーに注入する方法も示しています。このサービスは、必要な数のコントローラーに挿入できます。Angular サービスはシングルトンであるため、サービスに挿入されたコントローラーの数に関係なく、データ フェッチ コードのインスタンスは 1 つだけです。

サービスは $http リクエストの結果をキャッシュすることもできます。

于 2013-01-26T05:35:32.773 に答える