【问题标题】:Passing a parameter to a $resource?将参数传递给 $resource?
【发布时间】:2018-06-09 08:37:01
【问题描述】:

我有一个如下所示的控制器:

(function() {
angular
    .module("main")
    .controller("HomeCtrl",
        ["branchResource",
        "adalAuthenticationService",
        HomeCtrl]);

function HomeCtrl(branchResource, adalService){
    var vm = this;                
    vm.copyrightDate = new Date();        
    vm.user = adalService.userInfo.userName;

    // right here, can I insert the vm.user from above
    // as a parameter to the resource's query?
    branchResource.query(function (data) {
        vm.branches = data;                        
    });        
}}());

用户在到达应用程序的这一点时已通过身份验证。所以,用户的信息是可用的。

我有一个后端 API,它接受用户名并返回用户有权访问的分支的名称。我可以将 URL 连同有效的用户名一起粘贴到浏览器中,并获得预期的结果。我正在尝试在我的branchResource 中使用该 API:

(function () {
"use strict";

angular
    .module("common.services")
    .factory("branchResource",
    ["$resource", branchResource]);

function branchResource($resource){
    return $resource("/api/user/GetAllUserBranches?federatedUserName=:user")        
}}());

不过,我的问题是我不知道如何将 vm.user 从控制器传递给 branchResource。有人可以指出我正确的方向吗?

【问题讨论】:

  • 查看“用户资源” example in docs$resource() 中的对象用于告诉它从哪个属性中获取您的 :user,您需要将您的 userINfo 传递给 query()

标签: angularjs ngresource


【解决方案1】:

使用以下命令创建 $resource 对象:

function branchResource($resource){
    ̶r̶e̶t̶u̶r̶n̶ ̶$̶r̶e̶s̶o̶u̶r̶c̶e̶(̶"̶/̶a̶p̶i̶/̶u̶s̶e̶r̶/̶G̶e̶t̶A̶l̶l̶U̶s̶e̶r̶B̶r̶a̶n̶c̶h̶e̶s̶?̶f̶e̶d̶e̶r̶a̶t̶e̶d̶U̶s̶e̶r̶N̶a̶m̶e̶=̶:̶u̶s̶e̶r̶"̶)̶ ̶
    return $resource("/api/user/GetAllUserBranches")        
}}

调用$resource 对象:

branchResource.query({"federatedUserName": vm.user}, function (data) {
    vm.branches = data;                        
});

//OR

vm.branches = branchResource.query({"federatedUserName": vm.user});

重要的是要意识到调用$resource 对象方法会立即返回一个空引用(对象或数组取决于isArray)。从服务器返回数据后,现有引用将填充实际数据。

参数对象中的每个键值首先绑定到 url 模板(如果存在),然后将任何多余的键附加到 ? 之后的 url 搜索查询。

有关详细信息,请参阅AngularJS ngResource $resource API Reference

【讨论】:

    猜你喜欢
    • 2014-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多