【问题标题】:Angular resource call returning no error/data角度资源调用不返回错误/数据
【发布时间】:2014-11-14 11:47:09
【问题描述】:

这是我对服务的控制器调用:

  Answers.getAnswers($routeParams.questionId, function(answers) {
    console.log(answers);
    $scope.answers = answers;
  });

这里是服务:

angular.module('intquestApp')
  .factory('Answers', function ($resource) {
    return {
        getAnswers: function(questionId) {
          $resource('api/answers?questionid=' + questionId);
        }
    };
  });

我可以确定资源在那里,并且我知道questionId 的值是准确的。我在做一些语法错误吗?

【问题讨论】:

标签: angularjs


【解决方案1】:

从控制器代码的外观看来,您需要在工厂中进行回调。这是工厂代码(你在语法上弄错了)

工厂代码:

//Define a module like this
angular.module('intquestApp',[])
  .factory('Answers', function ($resource) {
    return {
        getAnswers: function(questionId,callback) {
          //define resource
          var questionURL = $resource('api/answers?questionid=' + questionId);
          //fire the get call
          questionURL.get().$promise.then(function(answer){
             //return answer in callback
             callback(answer);
          });
        }
    };
  });

控制器代码:

 Answers.getAnswers($routeParams.questionId, function(answers) {
    console.log(answers);
    $scope.answers = answers;
  });

【讨论】:

  • 这段代码就像让我的整个应用程序崩溃......也没有错误。真的很奇怪。
  • 你能想出一个解决这个问题的办法吗?你在工厂函数中获取数据?
  • 啊,angular.module('intquestApp',[]) 应该是angular.module('intquestApp') 我猜……现在我可以排除故障了……
  • 完美运行 - 将 get() 更改为 query() 因为数据数组。谢谢
  • 太棒了,这是一些不错的编码!
【解决方案2】:

来自angularJS doc

重要的是要意识到调用 $resource 对象方法会立即返回一个空引用(对象或数组取决于 isArray)。

你想要使用的是一个类似therethere的承诺

Answers.getAnswers($routeParams.questionId).$promise.then(function (result) {
   $scope.answers = result;
})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-27
    • 2017-07-19
    • 1970-01-01
    • 1970-01-01
    • 2018-11-22
    • 2019-10-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多