1
私は2つのビュー( 'インデックス'と 'アイテム')を持っています。
'index'には '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>
いくつかにconsole.logを使用してアイテムのHTML
<ion-view view-title="Item">
<ion-content>
<div>
{{item.name}}
</div>
</ion-content>
</ion-view>
()、私はそれを確認することができます。
初回:
- 項目コントローラ
- 放送項目項目に
- 更新更新済み
第二の時間:私は「アイテムの他の時間に行くときに
を更新
- 項目コントローラ
- 放送項目は、何らかの理由で、リスナーが動作していません。
あなたはあなたの問題のためにプランカまたはフィドルを提供できますか? – varit05
サービスを使用してアイテムを保存する – charlietfl
一部の人が私の質問に答えてくれました。 MyService.update()を呼び出す前にリスナー$を宣言する必要があります。私はまだそれが最初に動作し、他の時間に動作しない理由はわからない。 –