我是棱角分明的新手,我仍然在努力服务,我有一个查询服务器进行调查的应用程序,并在向导中显示调查问题,调查中的每个问题都在路线中(/调查/:surveyId /问题/:questionId)
我要做的是第一次加载调查,然后使用加载的数据而不再重新查询。
据我所知,我需要一项服务,我正在使用Restangular,我不知道在我的服务中要返回什么,这就是我所拥有的:
angular.module('surveys')
.factory('questionsService', ['Restangular', function (Restangular) {
var surveyId = 1;
return {
questions: Restangular.one("survey", surveyId).getList("questions")
}
}
然后在我的控制器中我只是这样做:
questionsService.questions.then(function (questions) {
$scope.questions = questions;
$scope.currentQuestion = $routeParams.page ? $scope.questions[$scope.currentQuestionIndex] : null;
});
这是有效的,我不知道这是否是正确的方法。
但是现在我需要服务中的其他东西,例如得到未解答的问题,这就是我迷失的地方,因为如果我在我的服务中将一个函数放在getUnansweredQuestions()中,我不知道如何获取问题,我不知道他们是否已经解决了。
我不知道我是否足够清楚,但我需要一些建议。
答案 0 :(得分:0)
尝试这样的事情:
surveys.run(function($rootScope,$http,$q) {
function getData () {
var deferred = $q.defer();
$http(insertConfigObjectHere)
.success(function (data, status, headers, config) {
deferred.resolve(data);
})
.error (function (data, status, headers, config) {
deferred.reject();
});
return deferred.promise;
}
$rootScope.myData = getData();
}
警告:我也是AngularJS的新手,但我认为这可能有用,但也没有测试过。