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)
有什么想法吗?
答案 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呼叫的任何组件)。