ui-router in ionic (AngularJS) 的路由问题

Routing issue with ui-router in ionic (AngularJS)

我在 ionic 中定义了 UI 路由,并在控制器中创建了 console.log,但我的问题是当我使用 ng-href="/#/[=27= 在 URL 之间切换时]" 然后没有数据显示在控制台中,但是当我刷新同一页面时,我能够在控制台中看到数据....让我知道我在这里做错了什么。

路线 -

  .state('app.roomone', {
    url: "/roomone/:id",
    views: {
      'menuContent': {
        templateUrl: "templates/roomone.html",
        controller: 'RoomoneCtrl'
      }
    }
  })

  .state('app.roomtwo', {
    url: "/selecroom/:roomname/:roomindex",
    views: {
      'menuContent': {
        templateUrl: "templates/roomtwo.html",
        controller: 'RoomtwoCtrl'
      }
    }
  })

以下是我的控制器 -

.controller('RoomoneCtrl', function($scope, $rootScope) {
  console.log("I am in room one");
});

.controller('RoomtwoCtrl', function($scope, $rootScope) {
  console.log("I am in room two");
});

在我的模板中 - 我有简单的 -- <a ng-href="/#/roomone/MY_ID" />Dummy Link</a>

问题 - 仅在刷新 (F5) 时我得到控制台值,如“"I am in room one"”,而不是 link 的简单导航。让我知道我做错了什么。

正如评论中指出的那样:视图已兑现,因此您第二次访问该页面时控制器未初始化。

中没有提到一个解决方案。 (在视图或路由器中将 cashing 更改为 false)因此我在这里添加了一个额外的答案(更好的是将其添加到评论中,但对于代码示例,这将变得不清楚)

在控制器(或指令)中监听 $ionicView.beforeEnter 事件以了解视图何时处于活动状态。

.controller('RoomoneCtrl', function($scope, $rootScope) {
    $scope.$on('$ionicView.beforeEnter', function () {
        // (on first time added to DOM and after the view becomes active after cached
        // change some value on your scope
        $scope.date = new Date();
        console.log("I am in room one");
    });
});

对于离子视图事件,请参阅:http://ionicframework.com/docs/api/directive/ionView/

我也遇到了同样的问题。这是缓存问题。我已经通过使用 cache 解决了这个问题:false。你已经将它添加到你的路由中,如下所示,

.state('app.roomone', {
    url: "/roomone/:id",
    cache : false,
    views: {
      'menuContent': {
        templateUrl: "templates/roomone.html",
        controller: 'RoomoneCtrl'
      }
    }
  })

  .state('app.roomtwo', {
    url: "/selecroom/:roomname/:roomindex",
    cache : false,
    views: {
      'menuContent': {
        templateUrl: "templates/roomtwo.html",
        controller: 'RoomtwoCtrl'
      }
    }
  })