我是 Angular 的新手,并且遇到了一个问题,即我的 $http url 占位符没有被实际数据替换。我想要的是这个:
"/json/:searchType/:userId"
当我使用我的 $http 调用时被替换为:
"/json/user/123"
相反,根据萤火虫的“网络”标签,我得到了这样的东西:
"/json/:searchType/:userId?userId=123&searchType=user"
我试图创建一个小提琴,但因为我使用来自服务器的不同视图和 json 数据,我不确定如何创建在小提琴中工作的东西,它看起来仍然像我实际在做的一样。我看过这个答案,这个答案,这个答案,这个答案和这个答案,仅举几例。我很难找到与 $resource 无关的帖子,或者它用于将 url 参数链接到对象参数的 @ 表示法。
为了解释,我使用服务在控制器和我的工厂之间传递searchType
和accountId
参数,它实际上执行 $http 请求。
这是我的控制器:
.controller('UserDetailsCtrl', ["$scope", "Search", function ($scope, Search) {
$scope.result = Search.getUser();
}])
这是我的工厂:
.factory('Search', ["$http", "SearchCriteriaSvc", function($http, SearchCriteriaSvc) {
var baseUrl = "/json/:searchType/:accountId";
return {
getUser: function () {
return $http.get(baseUrl,
{params:
{
accountId: SearchCriteriaSvc.getAccountId(),
searchType: SearchCriteriaSvc.getSearchType()
}
})
.then(function(result) {
return result.data;
});
}
}
}])
最后,我的服务:
.service('SearchCriteriaSvc', function() {
var searchType = "",
userId = "";
return {
getSearchType: function () {
return searchType;
},
setSearchType: function(value) {
searchType = value;
},
getUserId: function () {
return userId;
},
setUserId: function(value) {
userId= value;
}
};
})
我尝试不使用该服务来传递参数(只是手动输入字符串)并且得到相同的结果,所以我认为我的服务不是问题,但是,我不知所措。
任何帮助都会很棒。谢谢!