位置网址参数误解释

时间:2014-10-09 19:21:07

标签: javascript angularjs url

最初的问题是尝试正确设置网址中的参数,不过,这篇文章解决了它: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调用,因此它必须是单个参数)。

Chrome Console Log

enter image description here

这是主要问题。


我认为我的$位置使用存在问题,所以我去了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'
  });
})

我能错过什么?提前谢谢。

1 个答案:

答案 0 :(得分:0)

在我尝试访问的URL的控制器中,工厂调用不正确。我必须指定我在REST调用中尝试实现的参数,否则,参数将被松散地解释。就我而言,作为一个char数组。

是......

$scope.itemtmpl = item.query($routeParams.id);

原本应该......

$scope.itemtmpl = item.query({id: $routeParams.id});

这解决了问题的前半部分。我仍在尝试使用.search()设置参数时如何使用url。