gpt4 book ai didi

angularjs - 使用资源服务时如何传递参数?

转载 作者:行者123 更新时间:2023-12-03 07:58:07 27 4
gpt4 key购买 nike

一个非常菜鸟般的问题:

我正在尝试使用工厂方法构建资源对象:

.factory('Magazines', [function ($resource) {

var url = document.URL;
var urlArray = url.split("/");
var organId = urlArray[urlArray.length-1];

return $resource('http://localhost/ci/api/magazines/:id', {
loginID : organEntity,
password : organCommpassword,
id : organId
});
}])

此方法很简单,因为所有参数都是预定义的,organEntity和organCommpassword是在tag中定义的。

现在,对于另一个资源对象,我需要在调用工厂时传递参数。

我想象该资源对象的调用代码应如下所示:
.controller('ResrouceCtrl', function($scope, Magazines) {
$scope.magazines = Magazines.query();
});

我知道query()方法可以添加参数: Magazines.query(params, successcb, errorcb);
我想知道是否只是传递参数,可以在工厂获得参数吗?如何在工厂方法中指定这样的传入参数?

例如,现在假设我无法再从url获取organId,我需要从我的 Controller 中传递它,如何在工厂方法中接收organId?

这是我的资源js:
.factory('MagComments', function ($resource) {


return $resource('http://localhost/dooleystand/ci/api/magCommenct/:id', {
loginID : organEntity,
password : organCommpassword,
id : '@magId' //pass in param using @ syntax
});
})

这是我的 Controller :
$scope.magComments = MagComments.query({magId : 1});

我试图传递参数,但是会导致错误

最佳答案

我想我看到了您的问题,您需要使用@语法来定义将以这种方式传递的参数,而且我不确定正在使用什么loginID或密码,您似乎并没有在任何地方定义它们,而且也没有用作URL参数,那么它们是否作为查询参数发送?

根据目前所见,这是我的建议:

.factory('MagComments', function ($resource) {
return $resource('http://localhost/dooleystand/ci/api/magCommenct/:id', {
loginID : organEntity,
password : organCommpassword,
id : '@magId'
});
})
@magId字符串将告诉资源,将您作为参数传递给的对象上的 :id属性替换为 magId

我建议非常仔细地阅读 the documentation here(我知道它有点不透明),并仔细阅读最后的示例,这应该会有所帮助。

关于angularjs - 使用资源服务时如何传递参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19365714/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com