离子:从侧面菜单重新加载当前子状态会导致标题丢失

时间:2017-01-07 15:56:35

标签: ionic-framework angular-ui-router

我正在创建一个简单的Ionic菜单应用程序,我想从侧边菜单中重新加载当前状态。这是一个Plunkr来说明问题。

在“搜索”状态下,显示当前时间。所需的行为如下:当我从侧面菜单中单击“搜索”时,时间被刷新,即重新加载控制器。即使我已经在搜索页面上,也会发生这种情况。实际上,控制器当然要复杂得多,但这个例子足以说明问题。

我从离子'菜单'启动器模板开始。为了能够重新加载状态,我改变了两件事:

    app.js配置函数中的
  1. 禁用视图缓存$ionicConfigProvider.views.maxCache(0);
  2. 在menu.html中,我正在通过ui-sref-opts明确重新加载状态:

    ui-sref =“app.search”ui-sref-opts =“{reload:true}”

  3. 结果是时间确实已更新,但视图的标题已消失

    关于我做错了什么建议?

2 个答案:

答案 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;
})