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

前端之家收集整理的这篇文章主要介绍了angularjs – 使用资源服务时如何传递参数?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
一个非常新秀的问题:

我试图使用工厂方法构建资源对象:

.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参数,因此它们是作为查询参数发送的吗?

这是我可以建议基于我目前看到的:

.factory('MagComments',function ($resource) {
    return $resource('http://localhost/dooleystand/ci/api/magCommenct/:id',id : '@magId'
    });
  })

@magId字符串将告诉资源使用您作为参数传递的对象的属性magId替换:id。

我建议阅读超过the documentation here(我知道这是一个有点不透明)非常仔细,看看的例子,到底,这应该有很多帮助。

原文链接:https://www.f2er.com/angularjs/145822.html

猜你在找的Angularjs相关文章