1

我可能会遗漏一些基本的东西,但我坚持如何做到这一点。

我有一个 ng-repeat 块:

<div    data-class-block    
    ng-repeat="class in classList(1304)" 
    data-object="class">
</div>

在我的控制器中调用一个函数:

$scope.classList = function(semester){

  var list = myClassesFactory.list(semester)
  .then(function (data){
    return data.classes;
  }, function (error){
    console.log('ruh roh: error in myclasses controller');
  });

  return list;
};

这反过来又打电话给工厂:

myclassesNest.factory('myClassesFactory', ['$http', '$resource', '$q', function ($http,     $resource, $q) {
  var myClassesResource = $resource(':sem/myclasses.json', 
  {}, 
  {'query': {method: 'GET', params: {sem: '@sem'}, isArray: false} });

  var factory = {
  list : function(semester) {
      var deferred = $q.defer();
      myClassesResource.query({sem:semester},
      function (resp) {
        deferred.resolve(resp);
      });
      return deferred.promise;
    }
  };
  return factory;
}]); 

这完全炸毁了浏览器在错误后抛出错误,直到选项卡崩溃。哈哈。可能与摘要周期有关,这无疑是 Angular 的一个领域,我并不完全理解。

我将调用包装myClassesFactory.list在一个函数中,因为当我将它直接分配给$scope变量时,我收到一个错误,说它是一个对象而不是一个函数。

TLDR;我需要能够从模板中传递一个学期来选择要从端点返回的类资源组。

任何帮助是极大的赞赏!

(同样在有人说要阅读 $resource 文档之前,我想说我今天有好几次,那里的例子并没有说明这一点,因为它们将参数硬编码到控制器中。)

4

1 回答 1

1

您明确说明从查询调用返回的东西不会是一个数组。如果是的话,它会抛出一个错误,而且看起来可能是因为你正在寻找类(对我来说是复数的尖叫数组)。如果将其更改为 true 是否有效?

已编辑 您正在进入摘要循环循环。摘要的工作方式如下所示:http: //docs.angularjs.org/guide/concepts#runtime

当您的电话回来时,它会触发对页面的更新,该页面将调用另一个服务,这将重新开始循环。

最好像您显然那样修复它。

于 2013-10-30T15:30:06.843 回答