我的演示MEAN-app(在Cloud9中使用它)中遇到問題:當我將服務移動到單獨的文件時,應用程序無法正常工作。 這工作:當移動到單獨的文件時,角度服務不起作用
angular.module('locatorApp', [])
var locationListCtrl = function($scope, locatorData, geolocation) {
$scope.getData = function(position) {
var lat = position.data.lat;
var lng = position.data.lon;
locatorData.locationByCoords(lat,lng)
.then(function(data) {
$scope.data = {locations: data.data};
})
.catch(function(error) {
console.log(error);
});
};
geolocation.getPosition($scope.getData);
};
var locatorData = function($http) {
var locationByCoords = function (lat, lng) {
return $http.get('/api/locations?lng=' + lng + '&lat=' + lat);
};
return {
locationByCoords : locationByCoords
};
};
var geolocation = function($http) {
var geoAPIURL = 'http://ip-api.com/json/?fields=lat,lon,status';
var getPosition = function(cbSuccess, cbError) {
$http.get(geoAPIURL).then(cbSuccess, cbError);
};
return {
getPosition : getPosition
};
};
angular
.module('locatorApp')
.controller('locationListCtrl', locationListCtrl)
.service('locatorData', locatorData)
.service('geolocation', geolocation);
然後,我打破它爲單獨的文件, app.js:
angular
.module('locatorApp', ['ngRoute'])
.config(['$routeProvider', config]);
function config($routeProvider) {
$routeProvider
.when('/', {
templateUrl: 'home/home.view.html',
controller: 'homeCtrl',
controllerAs: 'vm'
})
.otherwise({redirectTo: '/'});
}
home.controller.js:
angular
.module('locatorApp')
.controller('homeCtrl', homeCtrl);
function homeCtrl(locatorData, geolocation) {
var vm = this;
vm.pageHeader = {
title: 'Locator',
};
vm.getData = function(position) {
var lat = position.data.lat;
var lng = position.data.lon;
locatorData.locationByCoords(lat,lng)
.then(function(data) {
vm.data = {locations: data.data};
})
.catch(function(error) {
console.log(error);
});
};
geolocation.getPosition(vm.getData);
}
geolocation.service.js:
angular
.module('locatorApp')
.service('geolocation', geolocation);
var geolocation = function($http) {
var geoAPIURL = 'http://ip-api.com/json/?fields=lat,lon,status';
var getPosition = function(cbSuccess, cbError) {
$http.get(geoAPIURL).then(cbSuccess, cbError);
};
return {
getPosition : getPosition
};
};
個
locatorData.service.js:
angular
.module('locatorApp')
.service('locatorData', locatorData);
var locatorData = function($http) {
var locationByCoords = function(lat, lng) {
return $http.get('/api/locations?lng=' + lng + '&lat=' + lat);
};
return {
locationByCoords : locationByCoords
};
};
鏈接在layout.jade:
// files in 'public' folder
script(src='/angular/angular.min.js')
script(src='/lib/angular-route.min.js')
// files in 'app_client' folder
script(src='/app.js')
script(src='/home/home.controller.js')
script(src='/common/services/geolocation.service.js')
script(src='/common/services/locatorData.service.js')
靜快遞app.js:
app.use(express.static(path.join(__dirname, 'public')));
app.use(express.static(path.join(__dirname, 'app_client')));
出現以下錯誤:
Error: [ng:areq] http://errors.angularjs.org/1.6.1/ng/areq?p0=fn&p1=not%20aNaNunction%2C%20got%20undefined
我使用Google搜索文檔和教程,但無法弄清楚服務定義有什麼問題。
您的服務實際上是作爲工廠構建的 – charlietfl
是的,我在計算模塊結構時使用了它,但它應該能夠工作,對嗎? –
也'getPosition()'不會返回任何 – charlietfl