2016-04-19 15 views
0

APIからデータを取得するAngularJSアプリケーションの作業に忙しいです。しかし、スコープ内で直接関数を呼び出し、それを普通に呼び出す可能性があるのだろうかと思います。

これは私が私のコントローラに持っているものです。

var self = this; 
$scope.refreshData = (function() { 
    $http({ 
      method: 'GET', 
      url: './test-api/testdata.php' 
     }) 
     .success(function(data) { 
      self.apiData = data; 
     }); 
    console.log('Refresh executed'); 
})(); 

$interval(function() { 
    console.log('Refresh called'); 
    $scope.refreshData(); 
}, 60000); 

このログ:

Refresh executed 
angular.js:13540 TypeError: $scope.refreshData is not a function 

私はちょうど通常の関数に変更し、$scope.refreshData()でそれを呼び出すことができます知っているが、私がいましたAngularJSにそのためのメソッドがあるかどうか疑問に思うだけです。

+1

ここではjavascriptと同じルールです! –

答えて

1

$ scope.refreshDataここでは、割り当てられた値がIIFEによって返された値なので、ここでは未定義です。

var self = this; 
($scope.refreshData = function() { 
    $http({ 
      method: 'GET', 
      url: './test-api/testdata.php' 
     }) 
     .success(function(data) { 
      self.apiData = data; 
     }); 
    console.log('Refresh executed'); 
})(); 

$interval(function() { 
    $scope.refreshData(); 
    console.log('Refresh called'); 
}, 60000); 

PS:これが機能するためには、次の操作を行う必要がありますあなたはそれhereについての詳細を読むことができます。

+0

私の最後の文章を読んでください。私はそれがそのようにすることができることを知っていますが、私はそれを直接ロードして呼び出すことができますか、後でそれを呼び出すことができるかどうか疑問に思っていました(私の例では一定の間隔で) – Patrick2607

+0

うん、 '$スコープの前に'( 'を置くことについて決して考えなかった。 – Patrick2607

関連する問題