HP.*_*HP. 12 html javascript angularjs angular-ui-router ionic-framework
码
http://codepen.io/hawkphil/pen/LEBNVB
我从侧面菜单中有两页(link1和link2).每个页面有2个标签:
link1:tab 1.1和tab 1.2
link2:tab 2.1和tab 2.2
我ion-tabs用于每个页面包含2个选项卡.
这是一个非常简单的设计:我想点击link1或link2转到适当的路线.但由于某种原因,状态已正确更改(请参阅控制台),但实际的html模板未更新.你能找出问题所在以及如何解决问题吗?
似乎存在一些缓存问题.
HTML
<title>Tabs Example</title>
<link href="//code.ionicframework.com/nightly/css/ionic.css" rel="stylesheet">
<script src="//code.ionicframework.com/nightly/js/ionic.bundle.js"></script>
Run Code Online (Sandbox Code Playgroud)
<ion-side-menus enable-menu-with-back-views="false">
<ion-side-menu-content>
<ion-nav-bar class="bar-positive">
<ion-nav-back-button>
</ion-nav-back-button>
<ion-nav-buttons side="left">
<button class="button button-icon button-clear ion-navicon" menu-toggle="left">
</button>
</ion-nav-buttons>
<ion-nav-buttons side="right">
<button class="button button-icon button-clear ion-navicon" menu-toggle="right">
</button>
</ion-nav-buttons>
</ion-nav-bar>
<ion-nav-view name="menuContent"></ion-nav-view>
</ion-side-menu-content>
<ion-side-menu side="left">
<ion-header-bar class="bar-balanced">
<h1 class="title">Left</h1>
</ion-header-bar>
<ion-content>
<ion-list>
<ion-item nav-clear menu-close ui-sref="link1">
Link 1
</ion-item>
<ion-item nav-clear menu-close ui-sref="link2">
Link 2
</ion-item>
</ion-list>
</ion-content>
</ion-side-menu>
<ion-side-menu side="right">
<ion-header-bar class="bar-calm">
<h1 class="title">Right Menu</h1>
</ion-header-bar>
<ion-content>
<div class="list list-inset">
<label class="item item-input">
<i class="icon ion-search placeholder-icon"></i>
<input type="text" placeholder="Search">
</label>
</div>
<div class="list">
<a class="item item-avatar" href="#">
<img src="img/avatar1.jpg">
<h2>Venkman</h2>
<p>Back off, man. I'm a scientist.</p>
</a>
</div>
</ion-content>
</ion-side-menu>
</ion-side-menus>
</ion-side-menus>
<script id="link1.html" type="text/ng-template">
<ion-tabs class="tabs-icon-top tabs-positive">
<ion-tab title="Home" icon="ion-home">
<ion-view view-title="Home">
<ion-content has-header="true" has-tabs="true" padding="true">
<p>Test</p>
<p>Test Tab 1.1</p>
</ion-content>
</ion-view>
</ion-tab>
<ion-tab title="About" icon="ion-ios-information">
<ion-view view-title="Home">
<ion-content has-header="true" has-tabs="true" padding="true">
<p>Test</p>
<p>Test Tab 1.2</p>
</ion-content>
</ion-view>
</ion-tab>
</ion-tabs>
</script>
<script id="link2.html" type="text/ng-template">
<ion-tabs class="tabs-icon-top tabs-positive">
<ion-tab title="Home" icon="ion-home">
<ion-view view-title="Home">
<ion-content has-header="true" has-tabs="true" padding="true">
<p>Test</p>
<p>Test Tab 2.1</p>
</ion-content>
</ion-view>
</ion-tab>
<ion-tab title="About" icon="ion-ios-information">
<ion-view view-title="Home">
<ion-content has-header="true" has-tabs="true" padding="true">
<p>Test</p>
<p>Test Tab 2.2</p>
</ion-content>
</ion-view>
</ion-tab>
</ion-tabs>
</script>
Run Code Online (Sandbox Code Playgroud)
JS
angular.module('ionicApp', ['ionic'])
.config(function($stateProvider, $urlRouterProvider) {
$stateProvider
.state('link1', {
url: "/link1",
views: {
'menuContent': {
templateUrl: "link1.html"
}
}
})
.state('link2', {
url: "/link2",
views: {
'menuContent': {
templateUrl: "link2.html"
}
}
});
$urlRouterProvider.otherwise("/link1");
})
.controller('AppCtrl', ['$scope', '$rootScope', '$state', '$stateParams', function($scope, $rootScope, $state, $stateParams) {
$rootScope.$on('$stateChangeSuccess', function(evt, toState, toParams, fromState, fromParams) {
console.log(toState);
});
}])
Run Code Online (Sandbox Code Playgroud)
Pan*_*kar 32
您当前是指最新版本,1.0.0-rc.0它在从一个状态转换到另一个状态时发生了错误,但未加载视图.
进一步的研究发现,他们有14个beta版本,从版本1.0.0-beta.1到1.0.0-beta.14现在的版本1.0.0-rc.0,即发布候选版本.
nav-view是完美的1.0.0-beta.13版本,但它停止工作后1.0.0-beta.14(这是最后的测试版),
我建议你降低你的版本1.0.0-beta.13,我知道取决于测试版本不是好事但仍然离子释放稳定版本你必须依赖它.
工作Codepen与1.0.0-beta.13
更新:
您的问题是您的视图正在缓存,因为默认情况下,您的离子应用程序中启用了缓存.
直接来自Ionic Doc(最新发布文档1.0.0-beta.14)
默认情况下,会缓存视图以提高性能.当视图被导航离开时,其元素将保留在DOM中,并且其范围与$ watch循环断开连接.导航到已缓存的视图时,其范围将重新连接,并且DOM中剩余的现有元素将成为活动视图.这也允许维护先前视图的滚动位置.缓存视图的最大容量为10.
因此,通过提cache: false上$stateProvider国家的功能或全局做禁用NAV视图的高速缓存$ionicConfigProvider.views.maxCache(0);的角度配置阶段内.
因此,在您的情况下,这就是确切的问题,您的第一个视图是获取缓存并再次显示它
有3种方法可以解决这个问题
1.全局禁用缓存
通过将所有缓存设置为0来禁用所有缓存,然后再使用它添加$ionicConfigProvider依赖项.
$ionicConfigProvider.views.maxCache(0);
Run Code Online (Sandbox Code Playgroud)
2.在状态提供程序中禁用缓存
$stateProvider
.state('link1', {
url: "/link1",
cache: false,
views: {
'menuContent': {
templateUrl: "link1.html"
}
}
})
.state('link2', {
url: "/link2",
cache: false,
views: {
'menuContent': {
templateUrl: "link2.html"
}
}
});
Run Code Online (Sandbox Code Playgroud)
3.使用属性禁用缓存
<ion-tab title="Home" icon="ion-home">
<ion-view cache-view="false" view-title="Home">
<!-- Ion content here -->
</ion-view>
</ion-tab>
<ion-tab title="About" icon="ion-ios-information">
<ion-view cache-view="false" view-title="Home">
<!-- Ion content here -->
</ion-view>
</ion-tab>
Run Code Online (Sandbox Code Playgroud)
我相信更新的方法很难实施.谢谢.
Github问题同一问题链接在这里
| 归档时间: |
|
| 查看次数: |
11204 次 |
| 最近记录: |