将参数传递给 $resource?

Passing a parameter to a $resource?

我有一个看起来像这样的控制器:

(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,它采用用户名和 returns 用户有权访问的分支名称。我可以将 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。有人能指出我正确的方向吗?

创建 $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 对象方法 returns 一个空引用(对象或数组取决于 isArray)。从服务器返回数据后,现有引用将填充实际数据。

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

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