我现在真的很沮丧。我现在尝试在离子应用程序中更改状态超过5小时。
这就是我所拥有的。
$stateProvider
.state('tab', {
url: '/tab',
abstract: true,
templateUrl: 'templates/tabs.html'
})
.state('tab.issues', {
url: '/issues',
views: {
'tab-issues': {
templateUrl: 'templates/tab-issues.html',
controller: 'IssuesController'
}
}
})
.state('tab.issue-detail', {
url: '/issues/:vertragsNr',
views: {
'tab-issues': {
templateUrl: 'templates/issue-details.html',
controller: 'IssueDetailsController'
}
}
})
.state('tab.issue-steps', {
url: '/issues/:vertragsNr/steps',
views: {
'tab-issues': {
templateUrl: 'templates/issue-steps.html',
controller: 'IssueStepsController'
}
}
})
当我在浏览器中手动打开url http://localhost:8100/#/tab/issues/1/steps时,一切正常, Controller 加载完毕,一切正常。
但是当我这样做
$scope.goto = function(){
$state.go('tab.issue-steps','{vertragsNr:1}')
}
在IssueDetailsController中,我看到一个过渡并且IssueStepsController被加载,但是 View 没有改变。
我也试着做一个
ui-sref="tab.issue-steps({ vertragsNr: r.vertragsNr})"
但是当我单击按钮时,什么都没有发生。我看到在页面源中在元素上创建了href =“#/ tab / issues / 1 / steps”,但它不会更改 View 。
我也试过
.state('tab.issue-steps', {
url: '/steps',
views: {
'tab-issues': {
templateUrl: 'templates/issue-steps.html',
controller: 'IssueStepsController'
}
}
})
但是它仍然没有重定向。
我也尝试过:
$location.url("tab/issues/1/steps");
这也不起作用
我不明白为什么只需更改简单 View 就变得如此复杂!
我不希望在详细信息 View 中有任何 subview 。我只想打开步骤 View 。
好的,要澄清一下,我需要将步骤 View 加载到tabs-issues View 中,这是我的tab控件的内容,并且在 subview 中不起作用。
我用这个问题弄了个笨蛋:http://plnkr.co/edit/YK7Fp3vUhEPGZeYtOF9Y?p=info
奇怪的是,第二次单击时,插销器上的所有部件均正常工作。但是该代码与我的应用程序中的代码完全相同。
最佳答案
我注意到在那个笨拙的人中,您仍在引用旧版本的框架:
<script src="http://code.ionicframework.com/1.0.0-beta.5/js/ionic.bundle.min.js"></script>
我将其更改为最新的稳定版本:
<link href="http://code.ionicframework.com/1.1.0/css/ionic.min.css" rel="stylesheet">
<script src="http://code.ionicframework.com/1.1.0/js/ionic.bundle.min.js"></script>
然后,您必须修复 View
issue-details.html
。您在该html View 中具有以下内容:<div class="list card" ui-sref="tab.issue-detail({ vertragsNr: r.vertragsNr})">
....
</div>
你真的不需要
ui-sref="tab.issue-detail({ vertragsNr: r.vertragsNr})"
因为它基本上是在重定向时将页面推回。
只需删除它,以便您的 View 如下所示:
<ion-view view-title="Ausgaben">
<ion-content class="padding">
<div class="list card">
<div class="item item-divider">{{r.title}}</div>
<div class="item item-body">
<div>
<div><b>Vertragsbeginn:</b> {{r.rentalBegin}}</div>
<div><b>Objekt:</b> {{r.objekt}}</div>
<div><b>Abholer:</b> {{r.abholer}}</div>
<div class="list">
<button class="item item-icon-left" ng-click="goto()" ng-repeat="m in r.machines" ng-disabled="m.abgabeDatum!==null">
<i class="icon balanced" ng-class="{'ion-checkmark': m.abgabeDatum!==null}"></i>
{{m.title}}
</button>
</div>
</div>
</div>
</div>
</ion-content>
</ion-view>
一切都应该像expected一样工作。
PS:我已经在 View
hide-nav-bar="true"
中删除了issue-steps.html
指令,只是为了确保导航正常工作。即使您重新添加它,它仍然可以工作。PPS:您可能已经注意到,应用程序与框架的新版本
1.1.0
的外观方式存在一些差异。自测试版以来,发生了一些变化。