2017-02-03 26 views
1

は、ここでは、コードです:角度スクリプトが実行されますページのロード後(解雇)

<html> 
    <head> 
     <script type='text/javascript'> 
      var myAppModule = angular.module('myApp', []); 

      myAppModule.factory('studentFactory', function(){ 
       // The whole factory goes here. 
      }); 

      myAppModule.controller('studentsController', ['$scope', 'studentFactory', function ($scope, studentFactory){ 
       $scope.students = []; 
       studentFactory.getStudents(function (data){ 
        $scope.students = data; 
       }); 
       studentFactory.removeStudent(function (data){ 
        alert('test'); 
        $scope.students = data; 
       }); 
      }]) 
     </script> 
</head> 
<body ng-app='myApp'> 
    ... 
</body> 
</html> 

alert('test')は、ページのロード時に解雇されます。どうすれば修正できますか?コード内の問題を気にしないでください、私はちょうどそれに取り組んでいます。ここで

はPlunkerのコードです:https://plnkr.co/edit/u7c13AIdKPjmdkzRUPXd?p=preview

+0

.removeStudentsの実装を確認できますか?そして.getStudents?おそらく彼らは非同期ではないでしょう。 – Brant

+0

もちろん、私は後で編集で提供したPlunkerのリンクに行くことをお勧めします。 –

+0

また、まだ実装されていません。 –

答えて

0

あなたは、インスタンス上のコントローラに機能removeStudentsを呼び出しているためです。あなたが発砲する前にいくつかのイベントを待つことを望むなら、それをイベントにバインドする必要があります。たとえば、次のようなクリック機能でラップするとします。

$scope.whenIClickMyButton = function() { 
    studentFactory.removeStudent(function (data){ 
     alert('test'); 
     $scope.students = data; 
    }); 
} 

<button ng-click="whenIClickMyButton()">Click Me</button> 

そして、これをclickイベントとして追加します。今のところ、コントローラーをインスタンス化するたびに起動します。コントローラを毎回呼び出すからです。

関連する問題