Angular stateParams to controller,$ urlRouterProvider

时间:2015-04-16 19:50:45

标签: javascript angularjs routing ionic

我正在使用Ionic和AngularJS构建应用程序。

现在我有一个包含项目列表的页面。每个项目都有一个ID,因此点击会产生如下结果:

/item/1

/item/2

其中1和2是ID' s。

现在,对于包含此列表的主页,我有这样的默认状态:

.state('app.home', {
url: "/home/",
views: {
  'menuContent': {
    templateUrl: "app/home.html"
  },
},
controller: 'HomeCtrl'

})

我想要的是将参数传递给控制器​​。我发现的是以下解决方案,但这不起作用。原因是它不知道使用哪个控制器(在上面的示例中,指定了HomeCtrl。)。

.state('app.item', {
url: "/item/:id",
views: {
  'menuContent': {
    templateUrl: "app/item.html"
  },
},
controller: function($scope, $stateParams) {
  $scope.id = $stateParams.id;
}

})

正如您所看到的,controller现在有一个功能,但我在哪里指定要使用的实际控制器? 此外,这是正确的方式还是有更好/更简单的方式?

2 个答案:

答案 0 :(得分:2)

.controller('controllerName',
    [       '$scope','$stateParams'
    function($scope , $stateParams ) {    
        // 
        $scope.id = $stateParams.id;

在$ stateParams.id中,id将是您在url(:id)中定义的参数的名称。

答案 1 :(得分:0)

顺便说一句 - 更简洁的方法是:

angular.extend($scope, $stateParams);

这会将$stateParams个密钥复制到您所在的$scope