我正在创建一个简单的Ionic菜单应用程序,我想从侧边菜单中重新加载当前状态。这是一个Plunkr来说明问题。
在“搜索”状态下,显示当前时间。所需的行为如下:当我从侧面菜单中单击“搜索”时,时间被刷新,即重新加载控制器。即使我已经在搜索页面上,也会发生这种情况。实际上,控制器当然要复杂得多,但这个例子足以说明问题。
我从离子'菜单'启动器模板开始。为了能够重新加载状态,我改变了两件事:
$ionicConfigProvider.views.maxCache(0);
在menu.html中,我正在通过ui-sref-opts
明确重新加载状态:
ui-sref =“app.search”ui-sref-opts =“{reload:true}”
结果是时间确实已更新,但视图的标题已消失。
关于我做错了什么建议?
答案 0 :(得分:1)
在路由中尝试这样的事情:
.state('tab.home', {
url: '/home',
cache: false, //<-- FORCE TO CLEAR CACHE
views: {
'tab-home': {
templateUrl: 'templates/home/home.html',
controller: 'HomeController'
}
}
})
答案 1 :(得分:0)
您可以广播一个事件来实现这一目标。但是如果你想保持这样,你可以使用一个参数,这样就可以了,因为基本上控制日期变量的是你的菜单,而不是你的状态。 所以你可以这样做:
app.js
.state('app.search', {
url: "/search",
params:{
date: new Date()
},
views: {
'menuContent' :{
templateUrl: "search.html",
controller: 'SearchCtrl'
}
}
})
菜单项
<ion-item nav-clear menu-close ui-sref="app.search({date: updateDate()})">
Search
</ion-item>
controllers.js(App控制器或特定菜单控制器)
.controller('AppCtrl', function($scope) {
$scope.updateDate = updateDate;
function updateDate(){
return new Date();
}
})
controllers.js
.controller('SearchCtrl', function($scope, $stateParams) {
$scope.now = $stateParams.date;
})