Javascript 我不知道';I don’我不相信我的观点
当我单击页脚中的按钮以路由到该视图时,未通过ui视图更改为正确的模板。控制台没有吐出任何错误,所以我很困惑 这是我的州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
$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或我不完全熟悉的工厂或服务,也不必访问不同的视图来完全重置主页上的数据。它应该可以工作..通过更改配置,如我在回答中所示