码
我在侧面菜单中有两页(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>
<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>
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);
});
}])
您当前指的是最新版本,1.0.0-rc.0
该版本在从一种状态转换为另一种状态时存在错误,并且未加载视图。
进一步的研究发现,从候选版本1.0.0-beta.1
到1.0.0-beta.14
现在,他们已经有14个beta版本1.0.0-rc.0
。
nav-view
直到1.0.0-beta.13
版本都可以正常使用,但是直到1.0.0-beta.14
最后一个beta 版本才停止工作,
我建议您将您的版本降级为1.0.0-beta.13
,我知道依赖beta版本不是一件好事,但直到离子发布稳定版本之前,您都必须依靠它。
工作Codepen 与1.0.0-beta.13
更新:
您的问题是您的视图正在被缓存,因为默认情况下,您的ionic应用程序中启用了缓存。
直接来自IonicDoc(最新版本doc1.0.0-beta.14)
默认情况下,将缓存视图以提高性能。离开视图时,其元素保留在DOM中,并且其作用域与$
watch循环断开连接。导航到已缓存的视图时,其范围将重新连接,并且DOM中剩余的现有元素将成为活动视图。这也可以保持先前视图的滚动位置。缓存视图的最大容量为10。
因此,通过cache:false
在$stateProvider
状态$ionicConfigProvider.views.maxCache(0);
配置阶段执行状态功能或全局禁用导航视图的缓存,就可以了。
因此,在您的情况下,这就是确切的问题,您的第一个视图正在获取缓存并再次显示
有3种方法可以解决此问题
1.全局禁用缓存
通过将其设置为0来禁用所有缓存,然后再使用它来添加$ionicConfigProvider
依赖项。
$ionicConfigProvider.views.maxCache(0);
Codepen
2.禁用状态提供程序中的缓存
$stateProvider
.state('link1', {
url: "/link1",
cache: false,
views: {
'menuContent': {
templateUrl: "link1.html"
}
}
})
.state('link2', {
url: "/link2",
cache: false,
views: {
'menuContent': {
templateUrl: "link2.html"
}
}
});
Codepen
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>
Codepen
我相信更新的方法将非常适合实施。谢谢。
问题内容: 我注意到,我会不时地对AngularJS应用程序中的模板之一进行更改,并且在运行时该更改将不可见。相反,我将不得不刷新应用程序,如果失败,请转到模板本身的路径并刷新它,以查看此更改。 防止像这样缓存这些模板的最佳方法是什么?理想情况下,我希望在当前使用Angular应用程序的过程中将它们缓存,但是下次我加载页面时,它们将检索最新和最出色的模板,而无需手动刷新。 我在使用ui-route
问题内容: 我正在使用ui-router 0.2.8。我想根据设备宽度加载模板。我可以毫无问题地获得设备的宽度,将其设置在范围等,但我可以弄清楚如何将其绑定到$ stateParams。我在另一个控制器中有scope变量,可以访问该状态的控制器,但状态本身不可用。我试过了templateProvider,但这只是返回一个字符串。为了使它起作用,我还能尝试什么? 问题答案: 您可以在事件中访问状态参
问题内容: 我知道它已经被讨论过很多次了,大多数文章都引用了以下代码:AngularJS中带有自定义URL的模态窗口 但是我就是不明白。我根本看不出来。我还发现这个jsfiddle实际上很棒,非常有帮助,除了它不添加url并允许我使用后退按钮关闭模式。 编辑:这是我需要帮助。 因此,让我尝试解释我要实现的目标。 我有一个添加新项目的表格,并且有一个“添加新项目”链接。我想当我单击“添加新项目”时,
几天来,我一直在努力更新卡式布局中的JText field和Jbox数据。我创建了小演示来解释我的问题...当我点击“开始”按钮时,它应该显示另一个面板,它正在工作,但是当我回到主页时,我希望我的JText field和jbox从“世界”更新为“你好”,但这不起作用。任何帮助和建议将不胜感激。很抱歉代码缩进,我不知道为什么复制粘贴不能正常工作)。
问题内容: 新的react-router语法使用该组件在路由周围移动。但是,如何将其与? 就我而言,我将标签用作主要的导航系统,因此从理论上讲,我应该具有以下内容: 但是在渲染时,material-ui会引发一个错误,该错误的子级必须是组件。可能的方式是什么?如何管理标签的道具? 提前致谢 问题答案: 我的老师帮助我使用了React Router 4.0的withRouter来包装Tabs组件,以
Spring Boot1.3引入了spring-boot-devtools来提供与Spring Reloaded类似的功能,以重新加载修改过的静态资源模板(html、js)而不必重新运行应用程序。 同样的应用程序现在没有重新加载我的静态资源。 我正在使用Intellij15.1。应用程序打包为WAR文件。 我的pom.xml中有以下依赖项(包括其他依赖项,由于不相关而被排除): 我尝试使用带有版本