我有2个观看次数('索引'和'项目')。
'指数'有一个按钮,只需转到' item'。
'项目'有一个调用广播事件的服务的控制器,控制器继续监听这个事件,用一个值填充一个对象。
问题:我第一次点击按钮,然后转到' item',我得到了正确的对象值。但是,如果我点击后退按钮(返回'索引')并再次点击同一按钮,我会转到' item'但是对象是空的。
为MyService
update: function() {
$rootScope.$broadcast('event:item-updated');
console.log("broadcast item updated");
return;
}
ItemCtrl
.controller('ItemCtrl', function($scope, $state, MyService) {
console.log("Item controller");
MyService.update();
$scope.item = {};
$scope.$on('event:item-updated', function(e, status) {
$scope.item = {"name": "My Item"};
console.log("on item updated");
});
}
索引HTML
<ion-view view-title="Index">
<ion-content>
<div>
<button class="button" ui-sref='app.item'>
Item
</button>
</div>
</ion-content>
</ion-view>
项目HTML
<ion-view view-title="Item">
<ion-content>
<div>
{{item.name}}
</div>
</ion-content>
</ion-view>
使用一些console.log(),我可以检查:
第一次:
第二次:
因此,出于某种原因,当我去“项目”时,听众没有工作。其他时间。
答案 0 :(得分:0)
I solved the problem changing the order that I declared the listener and called the server.
.controller('ItemCtrl', function($scope, $state, MyService) {
console.log("Item controller");
$scope.item = {};
$scope.$on('event:item-updated', function(e, status) {
$scope.item = {"name": "My Item"};
console.log("on item updated");
});
MyService.update();
}
So, I should declare the listener before call the service (that broadcast the event).