2016-06-29 26 views
0

私はAngularサービスで作業しています。私は、エラー「TypeError例外を:this.testTwoFunctionは関数ではありません」取得していますどこ機能「testTwoFunction」私は関数を呼び出すにはどうすればよいAngularJSサービス機能が定義されていません

angular.module('MobileAppModule') 
.run([‘MyService’, function(MyService) 
{ 
    console.log("MyService in run"); 
    MyService.init(); 

}]) 
.service('MyService', ['$rootScope', function($rootScope) 
{ 

    this.init = function() { 
     testOneFunction(); 
    } 
    function testOneFunction() { 
     this. testTwoFunction() 
    } 

    this.testTwoFunction = function() { 

    } 

}]); 

は「testTwoFunction()」これは、「巻き上げ」に関連する

+0

がしたこのコードを試してください:あなたがスコープ、ここで巻き上げについての詳細情報を読むことができます

this.init = function() { testOneFunction(); }; this.testTwoFunction = function() { // doing something here }; function testOneFunction() { this.testTwoFunction(); } 

:与えられた場合、あなたは少し並べ替えを行う必要があります"this"と "testTwoFunction()"の間のスペースを修正しますか? – devonJS

+0

はい、それでも動作しません。 – Rohit

答えて

0

。 TLDR:testOneFunctionは関数宣言ですが、testTwoFunctionは関数式(または変数 "this.testTwoFunction"に割り当てられた無名関数)です。

0

http://www.adequatelygood.com/JavaScript-Scoping-and-Hoisting.html

(function() 
    {'use strict'; 
angular.module('MobileAppModule',[]) 
.run(['MyService', function(MyService) 
{ 
console.log("MyService in run"); 
MyService.init()}]) 
.service('MyService', ['$rootScope', function($rootScope) 
{ 
var self = this; 
self.init = function() { 
    testOneFunction(); 
} 
self.testTwoFunction = function() { 
    console.log("severice 2") 
} 
function testOneFunction() { 
    self.testTwoFunction(); 
} 
}]); 
})(); 
関連する問題