如果这对于有角度的专家来说只是一个简单的问题,请原谅我,我对服务还是相当陌生的。
以下是我的控制器的代码段,在该代码段中,我试图发出服务请求以从JSON文件“ jobs.json”中调出数据。
加载网页时我没有收到数据,也没有在检查器元素中看到JSON文件。
我认为下面的代码中有错误。有人问什么问题吗?
Click here if you need to play about with the code
"use strict";
var app = angular.module("tickrApp", []);
app.service("tickrService", function ($http, $q){
var deferred = $q.defer();
$http.get('app/data/items.json').then(function (data){
deferred.resolve(data);
});
this.getItems = function () {
return deferred.promise;
}
})
.controller('tickCtrl', function($scope, tickrService) {
var promise = tickrService.getItems();
promise.then(function (data){
$scope.items= getData;
console.log($scope.items);
});
最佳答案
在您的Plunkr中,您有一些错误,例如<script>
标记错误的方式(您需要先使用Angular,然后您的代码才能使用angular.module
)。您还具有错误的ng-app-data
而不是data-ng-app
属性。
关键问题在于JS代码,$http.get()
调用的成功处理程序的第一个参数是具有data
属性的对象,该属性是返回的实际数据。因此,您应该改为使用该属性来解决您的承诺。
然后在控制器中,就像Michael P.所说的那样,getData
是未定义的,您应该使用传入的data
参数。
app.service("tickrService", function($http, $q) {
var deferred = $q.defer();
$http.get('jobs.json').then(function(response) {
deferred.resolve(response.data);
});
this.getjobs = function() {
return deferred.promise;
}
})
.controller('tickCtrl', function($scope, tickrService) {
var promise = tickrService.getjobs();
promise.then(function(data) {
$scope.jobs = data;
console.log($scope.jobs);
});
});
请参见forked Plunkr。