AngularJS ui.router用string替换$ state.params

时间:2017-12-13 17:26:54

标签: angularjs parameters angular-ui-router

我正在做某种自定义菜单,我们正在使用AngularJS v1.6.7和ui.router,我的州看起来像:

.state('programs',
    {
        url: '/programs/:id',
        component: 'programs',
        //below is our custom menu object
        menu: {
            name: 'Program id :id'
        }
    })

因此,我通过ui-sref="programs({id: '123'})"在HTML中转到此状态。之后,在代码的某处,我使用let currentState = $state.current获取当前状态,然后我尝试显示currentState.menu.name之类的名称作为结果,我看到Program id :id,我的问题是,如何替换'这个字符串中的id'参数?是否有任何公开的,ui.router开箱即用的方法,这样做? ui.router以某种方式用这些参数填充例如URL,所以在URL中,我看到123而不是:id。我的$state.params拥有ID字段:{#:null, id:123}

1 个答案:

答案 0 :(得分:1)

您可以使用resolve方法传递网址参数,然后这些方法将在您的控制器和范围中提供:

  {
      url: '/programs/:id',
      component: 'programs',
      menuData: function($stateParams){
          return {
            id: $stateParams.id
          }
      },
      controller: function($scope, menuData){
        // Now you can use it, either in a template, etc.
        $scope.id = menuData.id
      }
  })

检查此link以获取更详细的步骤