一个非常新秀的问题:
我试图使用工厂方法构建资源对象:
.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在标记内定义。
现在对于不同的资源对象,我需要在调用工厂时传入参数。
.controller('ResrouceCtrl',function($scope,Magazines) { $scope.magazines = Magazines.query(); });
我知道query()方法可以添加参数:Magazines.query(params,successcb,errorcb);
我不知道我是否只是传递参数,我可以在工厂获得参数吗?如何指定这样在工厂方法的参数传递?
例如,现在假设我不能从url获得organId,我需要从我的控制器传递它,如何在工厂方法中接收organId?
这里是我的资源js:
.factory('MagComments',function ($resource) { return $resource('http://localhost/dooleystand/ci/api/magCommenct/:id',{ loginID : organEntity,id : '@magId' //pass in param using @ Syntax }); })
这是我的控制器:
$scope.magComments = MagComments.query({magId : 1});
我试图传入参数,但它会导致错误
我想我看到你的问题,你需要使用@语法来定义将以这种方式传递的参数,也不知道什么loginID或密码正在做你似乎没有在任何地方定义他们不是用作URL参数,因此它们是作为查询参数发送的吗?
原文链接:https://www.f2er.com/angularjs/145822.html这是我可以建议基于我目前看到的:
.factory('MagComments',function ($resource) { return $resource('http://localhost/dooleystand/ci/api/magCommenct/:id',id : '@magId' }); })
@magId字符串将告诉资源使用您作为参数传递的对象的属性magId替换:id。
我建议阅读超过the documentation here(我知道这是一个有点不透明)非常仔细,看看的例子,到底,这应该有很多帮助。