在get url params集合中使用angularjs $ scope?

时间:2013-12-04 00:39:45

标签: angularjs angularjs-scope params

AngularJS newb here,正在处理我的第一个应用程序(在服务器上使用.NET)。我想调用WebAPI并将其传递给$ scope中存储的两个参数,但它不会这样做。如果我对值进行硬编码就可以正常工作,但如果我使用$ scope则不行。

这有效:

$http.get("/api/v1/entries", { params: { workgroupId:"3", reportedOn: "5/23/1968" } })

这不起作用,实际上导致AngularJS完全停止运行:

$http.get("/api/v1/entries", {params: {workgroupId:$scope.params.workgroupId, reportedOn:$scope.params.reportedOn}})

这也不起作用:

  $http.get("/api/v1/entries?workgroupId=" + $scope.params.workgroupId + "&reportedOn=" + $scope.params.reportedOn)

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

我刚试过你的代码,它对我有用,所以你不能定义你的变量。

你可以在你的$ http.get之前控制你的$ scope.params.workgroupId和$ scope.params.reportedOn变量。我打赌他们是未定义的。我只是将以下内容放入我的一个程序中(为了方便起见,删除了.params;除非你认为出于某种原因需要它?)并在我的控制器中添加了$ http依赖,它运行得很好。

$scope.workgroupId = 1;
$scope.reportedOn = 2;
$http.get("/api/v1/entries", {params: {workgroupId:$scope.workgroupId, reportedOn:$scope.reportedOn}});

答案 1 :(得分:0)

很难确定您提供的最小示例代码是什么,但很可能是您进行$ http调用的代码不在可以访问$ scope的执行上下文中。

This works(正如您从plnkr中的警报中看到的那样, foo bar $ scope params被映射到查询参数):

var app = angular.module("myApp", [function() {}])
.controller("MainCtrl", ['$scope', '$http', function($scope, $http) {
  $scope.params = { foo: "foo", bar: "bar" };
  $http.get("/", { params: { foo: $scope.params.foo, bar: $scope.params.bar }}) 
    // an error (404) is expected in this simple plnkr example
    .error(function(data, status, headers, config) {
      // but we can inspect what query params we sent in the config object
      // passed to the error callback
      alert("Params: foo = " + config.params.foo +
           " & bar = " + config.params.bar);
    });
}]);

如需更好的解释,请提供有关您的问题的更多详细信息,包括您的控制器的示例代码(以及您用于$ http呼叫的任何组件)。