Javascript 使用基于查询字符串参数的角度填充选择元素

Javascript 使用基于查询字符串参数的角度填充选择元素,javascript,angularjs,query-string,asp.net-web-api,Javascript,Angularjs,Query String,Asp.net Web Api,我需要用从web api检索的数据填充select元素 我使用web api的属性路由 api/project/{pid}/users 如果手动通过参数pid,则工作正常 我需要使用$http.get()通过querystring传递参数 我试过这个 this.getItems = function () { return $http({ url: '/api/project/{pid}/users', method: 'GET', dat

我需要用从web api检索的数据填充select元素

我使用web api的属性路由

api/project/{pid}/users
如果手动通过参数pid,则工作正常

我需要使用$http.get()通过querystring传递参数

我试过这个

this.getItems = function () {
   return $http({
        url: '/api/project/{pid}/users',
        method: 'GET',
        data: $.param({pid:123})
    });

}
在fiddler中,我得到了404错误

http://localhost/api/project/%7Bpid%7D/users

我阅读了$location.$Search和$routParam,但我需要其他帮助。

Angular不会像在视图中那样解析字符串和替换{pid},因此您可以简单地执行以下操作:

this.getItems = function () {
   return $http({
        url: '/api/project/' + pid + '/users',
        method: 'GET'
    });
}
甚至更短:

this.getItems = function () {
   return $http.get('/api/project/' + pid + '/users');
}
“手动通过pid”是什么意思

我想问一下,您的html中是否有类似于
ng click=“getItems()”
的内容。您可以将其更改为
ng click=“getItems(pid)”
并将其传递给您的函数

this.getItems = function (pid) {
   return $http.get('/api/project/' + pid + '/users');
}
params
选项将在url末尾添加一个搜索对象,如

?users=jondoe
更新

看看你的新代码,一切看起来都很好。但在你的HTML中,它应该是

<select ng-model="user" ng-options="item.id as item.name for item in users" ng-click="getUsers(item.id)">
$scope.getUsers(pid) {
                dataFactory.getUsers(pid)
                    .success(function (user) {
                        $scope.users = user;
                    })
                    .error(function (error) {
                        $scope.status = error.message;
                    });
            }'

当用户在选择元素中选择精确选项时,我需要调用控制器函数

角度服务:

dataFactory.getUsers = function (pid) {
            return $http.get(urlBase + 'api/projects/project/' + pid +'/users');
角度控制器:

function getUsers(pid) {
                dataFactory.getUsers(pid)
                    .success(function (user) {
                        $scope.users = user;
                    })
                    .error(function (error) {
                        $scope.status = error.message;
                    });
            }'
HTML:



Ok,当我手动通过pid时,它工作。但是如何从查询字符串中捕获pid呢?我假设我需要在angular controller中执行此操作?我认为您需要更详细地解释“从查询字符串捕获pid”的含义。就是这样。我使用$location服务从查询字符串获取pid<代码>变量pid=$location.search()和上面的以下代码。Tnx“手动传递pid”=硬编码:)我在HTML中有select元素。我想在change事件上调用函数,并从query string.ok传递pid参数。然后,只需按上图所示,尝试通过ng单击传递它。如果pid随用户输入而更改,则可以使用ng更改。你能提供你的代码的一部分吗?
<select ng-model="user" ng-options="item.id as item.name for item in users" ng-click="getUsers(pid)">