4

同様の質問がここで尋ねられましたが、役に立ちませんでした。

angularjs を学習していますが、コントローラーが 2 回実行されていることに気付きました。

ここで動作を示す非常に単純なフィドルの例があります

サービスについて学んでいるときにサンプルを作成しました。最初は、サービスをコントローラーに挿入していると思っていましたが、サービスに関連するすべてのコードにコメントしましたが、コントローラーは 2 回実行されます。

私の例はうまくいきますが、何か間違ったことをしているのではないかと心配しています。

<div ng-app="MyApp">
  <div ng-controller="MyCtrl">
    {{data1}} 
  </div>
</div>

var app = angular.module('MyApp', [])
app.service('Service1', function(){
  return {
    ajxResponse1: 'dataFromService1'
  };
 });

function MyCtrl($scope, Service1){
  alert('Entering MyCtrl');
  $scope.data1 = Service1.ajxResponse1;    
  alert('Exiting MyCtrl');
}
4

4 に答える 4

4

angular が 2 回参照されているため (1 回はFrameworks & Extensionsドロップダウンを介して、もう 1 回はExternal Resourceとして)、コントローラーがフィドルで 2 回実行されていました。

この更新されたフィドルを参照してください。ここでは、外部リソースを削除しましたが、アラートは 1 回だけ表示されます。

コードは変更されていません。

function MyCtrl($scope, Service1, Service2, Service3){
    alert('Entering MyCtrl');
    $scope.data1 = Service1.ajxResponse1;
    $scope.data2 = Service2.ajxResponse2;
    $scope.data3 = Service3.ajxResponse3;
    alert('Exiting MyCtrl');
}
于 2013-03-29T04:43:02.493 に答える