Javascript 我不知道';I don’我不相信我的观点

Javascript 我不知道';I don’我不相信我的观点,javascript,angularjs,routing,angular-ui-router,angularjs-routing,Javascript,Angularjs,Routing,Angular Ui Router,Angularjs Routing,当我单击页脚中的按钮以路由到该视图时,未通过ui视图更改为正确的模板。控制台没有吐出任何错误,所以我很困惑 这是我的州 $stateProvider .state("home", { url: "/home", templateUrl: "src/templates/home.html", controller: "ListController

当我单击页脚中的按钮以路由到该视图时,未通过ui视图更改为正确的模板。控制台没有吐出任何错误,所以我很困惑

这是我的州

$stateProvider
                .state("home", {
                    url: "/home",
                    templateUrl: "src/templates/home.html",
                    controller: "ListController as ul"
                })
                .state("home.about", {
                    parent: "home",
                    url: "/about",
                    templateUrl: "src/templates/home/about.html"
                })
                .state("home.archived", {
                    parent: "home",
                    url: "/archived",
                    templateUrl: "src/templates/home/archived.html"
                });
这是我的页脚,它承载着一个菜单,其中包含指向ui sref状态的链接

<nav role="navigation" class="navbar navbar-default navbar-fixed-top">
<ul class="footerul">
<li class="footerlist"><md-menu>
    <md-button class="menu" aria-label="Open demo menu" class="md-icon-button" ng-click="$mdOpenMenu($event)">
        <i class="fa fa-cog fa-lg"></i><span> Menu</span>
    </md-button>
    <md-menu-content width="6">
        <md-menu-item>
            <md-button ui-sref="home" ng-click="{ active: nav.isActive('/home')}">
                <i class="fa fa-home"></i>
                Home
            </md-button>
        </md-menu-item>
        <md-menu-item>
            <md-button ui-sref="home.about" ng-click="{ active: nav.isActive('/about')}">
                <i class="fa fa-info-circle"></i>
                About
            </md-button>
        </md-menu-item>
        <md-menu-item>
            <md-button ui-sref="home.archived" ng-click="{ active: nav.isActive('/archived')}">
                <i class="fa fa-info-circle"></i>
                Archived
            </md-button>
        </md-menu-item>
    </md-menu-content>
</md-menu></li>

  • 菜单 家 关于 存档


在我将父密钥放入我的状态并添加about并作为家中的孩子存档之前,一切都是正确路由的。

您当前实现状态的方式将导致一些wiered state name的形成,像
about
一样,子状态将通过名称
home.home.about
archived
可以作为
home.home.archived
访问,这是由于在状态定义中插入了
父级:“home”
选项而发生的。它在子状态名称之前追加父状态名称

基本上,您不应该混淆两种定义子状态的方法,下面是定义子状态的方法

  • 在状态定义中定义父属性
  • 定义子状态时遵循点(
    )符号,如
    parentState.childState
  • 让我们看看你如何修复它。 您应该从所有子状态中删除
    parent
    属性,因为您已经使用了第二种方法(使用点符号定义子状态)

    如果您想继续使用state上的parent选项,那么state配置将如下所示

    配置

    $stateProvider
    .state("home", {
      url: "/home",
      templateUrl: "src/templates/home.html",
      controller: "ListController as ul"
    })
    .state("about", {
      parent: "home",
      url: "/about",
      templateUrl: "src/templates/home/about.html"
    })
    .state("archived", {
      parent: "home",
      url: "/archived",
      templateUrl: "src/templates/home/archived.html"
    });
    

    您当前实现状态的方式将导致一些wiered状态名称的形成,例如
    关于
    子状态将通过名称
    home.home.about
    存档
    状态将通过
    home.home.archived
    访问,这是由于在您的状态定义中注入了
    parent:“home”
    选项而发生的。它在子状态名称之前追加父状态名称

    基本上,您不应该混淆两种定义子状态的方法,下面是定义子状态的方法

  • 在状态定义中定义父属性
  • 定义子状态时遵循点(
    )符号,如
    parentState.childState
  • 让我们看看你如何修复它。 您应该从所有子状态中删除
    parent
    属性,因为您已经使用了第二种方法(使用点符号定义子状态)

    如果您想继续使用state上的parent选项,那么state配置将如下所示

    配置

    $stateProvider
    .state("home", {
      url: "/home",
      templateUrl: "src/templates/home.html",
      controller: "ListController as ul"
    })
    .state("about", {
      parent: "home",
      url: "/about",
      templateUrl: "src/templates/home/about.html"
    })
    .state("archived", {
      parent: "home",
      url: "/archived",
      templateUrl: "src/templates/home/archived.html"
    });
    

    这可能是最好的做法。非常感谢。不过我还是很难让它工作。我想将它们作为孩子添加的原因是,我希望有一种简单的方法来存储数据,而不必使用我不完全熟悉的本地存储或工厂或服务,也不必访问不同的视图来完全重置家庭中的数据。这应该行得通。通过更改配置,如我在回答中所示,这可能是最好的方法练习。非常感谢。不过我还是很难让它工作。我想将它们添加为孩子的原因是,我希望有一种简单的方法来存储数据,而不必使用localStorage或我不完全熟悉的工厂或服务,也不必访问不同的视图来完全重置主页上的数据。它应该可以工作..通过更改配置,如我在回答中所示