最初的问题是尝试正确设置网址中的参数,不过,这篇文章解决了它:How can I set a query parameter in AngularJS without doing a route?
然后出现了一个新问题。在控制器中设置URL时,
$scope.view = function(itemtmpl) {
// change path and add parameter 'id' to the url
$location.path('/itemtemplates/view/').search('id', itemtmpl.itemdefnid);
// also tried with $routeProvider
$location.url('/itemtemplates/view/' + itemtmpl.itemdefnid);
};
项目的ID被解释为单独的参数,而不是一个数字(该URL将用于在工厂中进行REST调用,因此它必须是单个参数)。
这是主要问题。
我认为我的$位置使用存在问题,所以我去了AngularJS文档:https://docs.angularjs.org/api/ng/service/ $ location
仍然没有运气。
$ routeParams变量print out表示相应的参数设置。
我可能需要澄清的另一个想法是,为什么我的网页配置只会识别$ location.url,因为它只是附加到结尾view/1000
,而不是“#{1}}参数view/?1000
如果标识为view/?id=1000
.config(function($routeProvider) {
$routeProvider.when('/itemtemplates/view/:id', {
templateUrl: 'itemtemplates/add/main.tpl.html',
controller: 'ViewCtrl'
});
})
我能错过什么?提前谢谢。
答案 0 :(得分:0)
在我尝试访问的URL的控制器中,工厂调用不正确。我必须指定我在REST调用中尝试实现的参数,否则,参数将被松散地解释。就我而言,作为一个char数组。
是......
$scope.itemtmpl = item.query($routeParams.id);
原本应该......
$scope.itemtmpl = item.query({id: $routeParams.id});
这解决了问题的前半部分。我仍在尝试使用.search()
设置参数时如何使用url。