Javascript 尝试从模板向$resource工厂发送参数
我可能遗漏了一些基本的东西,但我一直在思考如何做到这一点 我有一个ng重复块:Javascript 尝试从模板向$resource工厂发送参数,javascript,angularjs,Javascript,Angularjs,我可能遗漏了一些基本的东西,但我一直在思考如何做到这一点 我有一个ng重复块: <div data-class-block ng-repeat="class in classList(1304)" data-object="class"> </div> 这反过来又给工厂打电话: myclassesNest.factory('myClassesFactory', ['$http', '$resource', '$q', function (
<div data-class-block
ng-repeat="class in classList(1304)"
data-object="class">
</div>
这反过来又给工厂打电话:
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;
}]);
这会彻底破坏浏览器一个接一个地抛出错误,直到选项卡崩溃。lol.Probabaly与消化循环有关,这是一个我不完全理解的角度问题
我将对myClassesFactory.list
的调用包装在一个函数中,就像当我将它直接分配给$scope
变量时,我收到一个错误,说它是一个对象而不是函数
TLDR;我需要能够在一个学期内通过模板来选择要从端点返回的类资源组
非常感谢您的帮助
(在任何人说要阅读$resource文档之前,我想说我今天已经读了好几次了,这里的示例没有说明这一点,因为它们将参数硬编码到控制器中。)您明确地说,从查询调用返回的东西不是数组。如果是的话,它会抛出一个错误,而且看起来可能是,因为您正在寻找类(对我来说是复数尖叫数组)。如果你把它改为真,它能工作吗 已编辑 您正在运行一个摘要循环。摘要的工作方式如下所示: 当您的呼叫返回时,它会触发对页面的更新,该页面将调用另一个服务,从而再次启动循环
最好像您显然做的那样修复它。您明确表示从查询调用返回的东西不是数组。如果是的话,它会抛出一个错误,而且看起来可能是,因为您正在寻找类(对我来说是复数尖叫数组)。如果你把它改为真,它能工作吗 已编辑 您正在运行一个摘要循环。摘要的工作方式如下所示: 当您的呼叫返回时,它会触发对页面的更新,该页面将调用另一个服务,从而再次启动循环
最好像你显然做的那样修复它。你能告诉我你是否正在找回JSON吗?抛出的错误是什么?你能把一个展示这种行为的JSFIDLE示例放在一起吗?你能告诉我你是否正在找回JSON吗?抛出的错误是什么?你能把一个展示这种行为的JSFIDLE示例放在一起吗?它是一个数组,尽管改变它并不能解决问题。:/我已经用另一种方式解决了这个问题,尽管我仍然很想知道如何让它工作。现在,我已经设置了一个范围变量来保存当前学期,这样我就可以将其传递给控制器内的资源查询(这很奇怪)。不幸的是,我今天没有足够的时间来制作小提琴。我将在未来几天内尝试。谢谢你的帮助!谢谢我有一些其他的问题,这让我有几天没有注意到这一点。谢谢你的回答。我会更仔细地阅读这些文件。你的解释已经帮助我理解了这个问题。再次感谢!它是一个数组,但更改并不能解决问题。:/我已经用另一种方式解决了这个问题,尽管我仍然很想知道如何让它工作。现在,我已经设置了一个范围变量来保存当前学期,这样我就可以将其传递给控制器内的资源查询(这很奇怪)。不幸的是,我今天没有足够的时间来制作小提琴。我将在未来几天内尝试。谢谢你的帮助!谢谢我有一些其他的问题,这让我有几天没有注意到这一点。谢谢你的回答。我会更仔细地阅读这些文件。你的解释已经帮助我理解了这个问题。再次感谢!
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;
}]);