這個問題之前已經問過很多次了,我試過了答案,但它們似乎並沒有解決我面臨的問題。我是Angular的新手,並試圖將控制器的值傳遞給工廠,以便通過API檢索一些JSON信息。雖然我能夠從我的HTML獲取值到控制器,但下一步是給我一個TypeError:無法讀取未定義的屬性'getCityData'。我的控制器代碼如下:[JavaScript] [Angular]:TypeError:無法讀取未定義的屬性'getCityData'
app.controller('MainController', ['$scope', function($scope, HttpGetter) {
var successFunction = function(data) {
$scope.data = data;
}
var errorFunction = function(data) {
console.log("Something went wrong: " + data);
}
$scope.cityName = '';
$scope.getCityName = function(city) {
$scope.cityName = city;
HttpGetter.getCityData($scope.cityName, successFunction, errorFunction);
};
}]);
工廠代碼如下:
app.factory('HttpGetter', ['$http', function($http){
return {
getCityData: function(query, successFunction, errorFunction){
return $http.get('http://api.apixu.com/v1/current.json?key=MyAppKey&q=' + query).
success(successFunction).
error(errorFunction);
}
};
}]);
我已經更換了我的字符串「MyAppKey」只要是安全的,但我的代碼包含應用程序鍵適當的鑰匙。另外,如果我能夠深入瞭解函數調用是如何發生的,那麼這將非常有幫助,因爲似乎有很多函數調用發生。
謝謝!它解決了問題!順便說一句,在方括號內的元素稱爲注入? –
是的,你說得對。當然也可以明確地定義,這是防止縮小細分的唯一方法。像:'MyController。$ inject = ['$ scope','AnyService'];' – softvar