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'
}
}
})
我在 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 的简单导航。让我知道我做错了什么。
正如评论中指出的那样:视图已兑现,因此您第二次访问该页面时控制器未初始化。
在控制器(或指令)中监听 $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'
}
}
})