guys 我是Angularjs的新手,这里是我的新单页面应用程序的一些代码。但我认为我做得不对。 这里是我的戈德:Angularjs:无法迭代或从服务结果中获取结果
var TownApp=angular.module('TownApp',['ngRoute','ngResource']);
TownApp.service('Town', function($http) {
this.all = function() {
return $http.get('/database.json').then(function(response){
return response.data;
})
};
});
var HomeCtrl = TownApp.controller('HomeCtrl',function($scope,Town){
$scope.towns = Town.all();
});
var TownCtrl = TownApp.controller('TownCtrl',function($scope, $routeParams, Town){
console.log(Town.all().length)
$scope.towns = Town.all();
console.log($scope.towns.length)
//........
})
TownApp.config(['$routeProvider', function($routes) {
$routes.when('/',{
templateUrl : 'welcome.html',
controller : 'HomeCtrl'
}).when('/town/:townId',{
templateUrl : 'town.html',
controller : 'TownCtrl'
}).otherwise({
redirectTo : '/'
});
}]);
所以,问题是,你可以看到这两个控制台日志在镇控制器,它们全部恢复“未定义”。所以我不能迭代或从Town.all()
获取值。但它在HomeController上的工作非常完美。
我对服务和工厂都很满意。我想我只是以错误的方式去做? 感谢您的帮助!
吉文嗨,现在我就'不能从控制台读取undefined'的特性“长度”,可能是什么问题您认为? –
你有没有检查你在response.data中得到了什么。这可能不是你想要的数组。把一个断点放在$ scope.towns = response.data;并检查包含哪些响应。 –
Iv将所有数据从异步更改为静态JSON字符串,节省了大量时间。稍后我会在完成此项目时回到异步服务的东西。再次感谢您的帮助! –