带标签的导航不起作用
Navigation with tabs not working
我试图在从列表中选择一些项目后导航到选项卡列表。
当我尝试 运行 我的代码时,我得到 Cannot GET /tab/1337
我从列表中选择的内容如下:
<div class="list">
<a ng-repeat="item in items"
href="/tab/{{item.queId}}"
class="item item-thumbnail-left">
我的 app.js 看起来像
.state('tabs.details', {
url: "/details/:itemqueId",
views: {
'details-tab': {
templateUrl: "templates/details.html",
controller: 'FriendDetailCtrl'
}
}
})
.state('tabs', {
url: "/tab/:itemqueId",
abstract: true,
templateUrl: "templates/tabs.html"
});
我的 tabs.html 看起来像:
<ion-view>
<ion-tabs class="tabs-icon-top">
<!-- Pets Tab -->
<ion-tab title="Dashboard" icon="icon ion-home" href="#/tab/dash">
<ion-nav-view name="tab-dash"></ion-nav-view>
</ion-tab>
<!-- Adopt Tab -->
<ion-tab title="details" icon="icon ion-heart" href="#/tab/details">
<ion-nav-view name="tab-details"></ion-nav-view>
</ion-tab>
</ion-tabs>
</ion-view>
不知道是什么问题,希望大家帮忙!
谢谢!
删除 tabs
状态定义中的 abstract: true
行 - 抽象状态无法激活。参见 ui-router docs。
更新:
点击 /tab/1337
时您实际期望发生什么?
可用选项卡
首先,查看当前状态配置,您只有一个有效路由,因为 tab
状态是抽象的:
/tab/:itemqueId/details/:itemqueId
看看 tab.details
它如何将 url 添加到 tab
中,因为它是 tabs
的嵌套状态。因此 /tab/1337
不是有效路线。
您可能正在寻找的是 /tab/:itemqueId/details
- 因此将 tab.details
的 url 更改为 url: "/details"
正在链接
在从 angular 范围插入变量时,您应该始终更喜欢使用 ng-href
指令,而不是使用 href
属性。
在这种情况下,我什至建议使用 ui-router 中的 ui-sref
指令。这样您就可以创建带有状态定义的 url 并检查您的定义是否有效。
<a ui-sref="tab.details({ itemqueId: item.queId })">
在 tabs.html
中,您的链接应如下所示以指向同级状态 - 假定 tabs.dash
是类似于 tabs.details
:
的有效状态
<!-- Pets Tab -->
<ion-tab title="Dashboard" icon="icon ion-home" ui-sref="^.dash">
<ion-nav-view name="tab-dash"></ion-nav-view>
</ion-tab>
<!-- Adopt Tab -->
<ion-tab title="details" icon="icon ion-heart" href="^.details">
<ion-nav-view name="tab-details"></ion-nav-view>
</ion-tab>
我试图在从列表中选择一些项目后导航到选项卡列表。 当我尝试 运行 我的代码时,我得到 Cannot GET /tab/1337 我从列表中选择的内容如下:
<div class="list">
<a ng-repeat="item in items"
href="/tab/{{item.queId}}"
class="item item-thumbnail-left">
我的 app.js 看起来像
.state('tabs.details', {
url: "/details/:itemqueId",
views: {
'details-tab': {
templateUrl: "templates/details.html",
controller: 'FriendDetailCtrl'
}
}
})
.state('tabs', {
url: "/tab/:itemqueId",
abstract: true,
templateUrl: "templates/tabs.html"
});
我的 tabs.html 看起来像:
<ion-view>
<ion-tabs class="tabs-icon-top">
<!-- Pets Tab -->
<ion-tab title="Dashboard" icon="icon ion-home" href="#/tab/dash">
<ion-nav-view name="tab-dash"></ion-nav-view>
</ion-tab>
<!-- Adopt Tab -->
<ion-tab title="details" icon="icon ion-heart" href="#/tab/details">
<ion-nav-view name="tab-details"></ion-nav-view>
</ion-tab>
</ion-tabs>
</ion-view>
不知道是什么问题,希望大家帮忙!
谢谢!
删除 tabs
状态定义中的 abstract: true
行 - 抽象状态无法激活。参见 ui-router docs。
更新:
点击 /tab/1337
时您实际期望发生什么?
可用选项卡
首先,查看当前状态配置,您只有一个有效路由,因为 tab
状态是抽象的:
/tab/:itemqueId/details/:itemqueId
看看 tab.details
它如何将 url 添加到 tab
中,因为它是 tabs
的嵌套状态。因此 /tab/1337
不是有效路线。
您可能正在寻找的是 /tab/:itemqueId/details
- 因此将 tab.details
的 url 更改为 url: "/details"
正在链接
在从 angular 范围插入变量时,您应该始终更喜欢使用 ng-href
指令,而不是使用 href
属性。
在这种情况下,我什至建议使用 ui-router 中的 ui-sref
指令。这样您就可以创建带有状态定义的 url 并检查您的定义是否有效。
<a ui-sref="tab.details({ itemqueId: item.queId })">
在 tabs.html
中,您的链接应如下所示以指向同级状态 - 假定 tabs.dash
是类似于 tabs.details
:
<!-- Pets Tab -->
<ion-tab title="Dashboard" icon="icon ion-home" ui-sref="^.dash">
<ion-nav-view name="tab-dash"></ion-nav-view>
</ion-tab>
<!-- Adopt Tab -->
<ion-tab title="details" icon="icon ion-heart" href="^.details">
<ion-nav-view name="tab-details"></ion-nav-view>
</ion-tab>