离子 - [ui.router]无法导航嵌套状态

时间:2015-06-22 16:09:51

标签: angularjs angular-ui-router ionic-framework ionic

我一直在努力做这项工作,我想我错过了什么,但我不知道是什么。我试过绝对路径和同样的问题。也许是我试图联系各州的方式?

树视图如下:

var results []string
if err := cache.Get("res", &results); err == nil {
  // use results
} else {
  // do db query
  cache.Set("results", results, 3*time.Minute)
}

我可以从- app - app.category - app.category.category-detail 导航到app,但我不能再继续了,这是我的路线:

app.category

这是我的 category.html

        .state('app.category', {
            url: "/category?catId",
            views: {
                'menuContent': {
                    templateUrl: "templates/category.html",
                    controller: "CategoryCtrl",
                    params: ['catId ']

                }

            }
        })
        .state('app.category.category-detail', {
            url: "/category-detail",
            views: {
                'menuContent': {
                    templateUrl: "templates/category-detail.html",
                    controller: "DirectoryDetailCtrl",
                    params: [ 'catId' ]
                }
            }
        })

现在,如果我使用Chrome开发工具检查此网站,我可以看到生成下一个链接:

<ion-view>

    <ion-nav-bar class="bar-dark nav-title-slide-ios7 bg-nav" ng-controller="NavCtrl">
        <ion-nav-back-button class="button-clear" ng-click="myGoBack()">
            <i class="ion-chevron-left blanco negrita"></i>
        </ion-nav-back-button>
    </ion-nav-bar>

    <ion-content class="directory-content padding-3 bg-gris">
        <ion-list>
            <ion-item ng-repeat="category in categories" class="item-thumbnail-left tarjeta">
            <a ui-sref="app.category.category-detail">
                {{category.categoryName}}
            </a>
            </ion-item>
        </ion-list>
    </ion-content>
</ion-view>

但视图未加载,并且未显示错误。

类别-detail.html

    <a ui-sref="app.category.category-detail" href="#/app/category/category-detail?catId=1" class="">
         Category 1
    </a>

1 个答案:

答案 0 :(得分:3)

params定义存在一个问题,视图/目标命名存在第二个问题

予。 params:[&#39; catId] 问题

详细了解 params: {} 对象,例如:

Angular ui router passing data between states without URL

上面使用的符号:

params: [ 'catId' ]

不再有效......现在我们有更多的设置,例如默认值:

params : { cateId : null }

了解更多here

II。查看命名

您似乎也尝试从ui-view="menuContent"及其子状态'app.category'定位相同的 'app.category.category-detail' ...两者都具有相对命名:

   .state('app.category', {
        url: "/category?catId",
        views: {
            'menuContent': { // no @ = relative name
             ...

    .state('app.category.category-detail', {
        url: "/category-detail",
        views: {
            'menuContent': {
            ...

如果此目标 ui-view="menuContent" 在&#39; app&#39;中定义州,我们必须使用绝对命名

.state('app.category.category-detail', {
    url: "/category-detail",
    views: {
        'menuContent@app': {
        ...

原因是,该名称视图符号没有&#39; @&#39;是实际的,可以表达为&#39; viewName @ parentState&#39;。所以这些都是一样的

.state('app.category', {
    url: "/category?catId",
    views: {
        // relative
        'menuContent': {
        // absolute - targeting the same ui-view
        'menuContent@app': { // this is absolute name

尝试在这里获得更多(不是关于离子,但后面的UI-Router的东西是相同的)