Javascript 角度用户界面路由器-“;无法解析状态“;带参数

Javascript 角度用户界面路由器-“;无法解析状态“;带参数,javascript,angularjs,angular-ui-router,Javascript,Angularjs,Angular Ui Router,我只是尝试使用Angular UI路由器。我只有两种状态,一种是瞬间,一种是疯狂的简单。以下是我的应用程序: .config(function($stateProvider, $urlRouterProvider){ $stateProvider .state('items', { url: '/items', templateUrl: 'src/components/Items/l

我只是尝试使用Angular UI路由器。我只有两种状态,一种是瞬间,一种是疯狂的简单。以下是我的应用程序:

    .config(function($stateProvider, $urlRouterProvider){

        $stateProvider
            .state('items', {
                url: '/items',
                templateUrl: 'src/components/Items/list.html',
                controller: 'ItemsController'
            })
            .state('item-details', {
                url: '/item-details/:itemId',
                templateUrl: 'src/components/Items/details.html',
                controller: 'ItemDetailsController'
            });

        $urlRouterProvider.otherwise('/items');

    });
还有一点我的HTML:

<a ui-sref="item-details/{{item.id}}">{{ item.name }}</a>
我希望我正在做一些非常明显的事情,但事实证明这比我预期的要复杂

试试这个

<a ui-sref="item-details({ itemId: item.id })">{{ item.name }}</a>
{{item.name}

您的
ui sref
指令的语法错误。而不是这样做:

<a ui-sref="item-details/{{item.id}}">{{ item.name }}</a>

以上所有答案都是正确的

作为额外的即兴创作,它看起来像是
项目细节
实际上可以成为
项目

我建议您将
项目详细信息
路由更改为
项目。详细信息
,这将表明详细信息路由已从
项目
状态继承

.state('item.details', {
      url: '/item-details/:itemId',
      templateUrl: 'src/components/Items/details.html',
      controller: 'ItemDetailsController'
});
然后,您的
ui sref
将成为

<a ui-sref=".details({itemId: item.id})">{{ item.name }}</a>
{{item.name}

愚蠢的语法陷阱!这很好用。感谢您的完整解释。请注意:您在ui sref文档中引用的链接不起作用。@amlyhamm刚刚进行了更新。.现在它将起作用。.您还可以查看我的答案,其中有一些额外内容可以改进您的代码。.谢谢您的建议,@pankajparkar。首先,我希望得到一个简单的例子。这可能是我下一步的方向@非常感谢amlyhamm upvote:)
.state('item.details', {
      url: '/item-details/:itemId',
      templateUrl: 'src/components/Items/details.html',
      controller: 'ItemDetailsController'
});
<a ui-sref=".details({itemId: item.id})">{{ item.name }}</a>