2013-09-25 42 views
40

我有以下代碼:

app.factory('Position', ['$timeout', function() { 

    var position = { 
     latitude: 44, 
     longitude: 26 
    }; 

    console.log("Timeout started"); 

    $timeout(function() { 
     position.latitude += 15; 
     position.longitude += 15; 
    }, 2000); 

    return position; 
}]); 

我也得到在Javascript控制檯$timeout not defined。我沒有正確注入服務的依賴關係嗎?

+0

只是一帶而過相關的去:如果你有一個構建過程,特別是使用Grunt的過程,你應該檢查'ngmin'。這將使您的注射器縮小安全並消除雙重打字的負擔。你只需要'function($ timeout)'。 – Benmj

回答

81

您沒有注入$timeout。它應該如下。

app.factory('Position', ['$timeout', function($timeout) { 
    ... 
}]); 

聲明這種方式可以確保您的JavaScript代碼縮小時正確識別服務。有關如何幫助微小的更多信息,請參閱A Note on MinificationDeclaring AngularJS Modules For Minification

如果縮小是不是在你的計劃(如快速測試),你可以簡單地用

app.factory('Position', function($timeout) { 
    ... 
}); 
+3

我相信隨着內置服務(任何有$的東西),你可以把它們放在函數sig中,你不必在依賴項中聲明它們。如果您只使用$服務。 – jcollum

+2

我認爲這樣做是爲了縮小目的http://docs.angularjs.org/tutorial/step_05 – kubuntu

+2

是的,它爲縮小語法完成 –

相關問題