2016-07-10 35 views
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> 

()、私はそれを確認することができます。

初回:

  • 項目コントローラ
  • 放送項目項目に
  • 更新更新済み

第二の時間:私は「アイテムの他の時間に行くときに

を更新

  • 項目コントローラ
  • 放送項目は、何らかの理由で、リスナーが動作していません。

+2

あなたはあなたの問題のためにプランカまたはフィドルを提供できますか? – varit05

+0

サービスを使用してアイテムを保存する – charlietfl

+0

一部の人が私の質問に答えてくれました。 MyService.update()を呼び出す前にリスナー$を宣言する必要があります。私はまだそれが最初に動作し、他の時間に動作しない理由はわからない。 –

答えて

0

私はリスナーを宣言してサーバーを呼び出した順序を変更する問題を解決しました。

したがって、(イベントをブロードキャストする)サービスを呼び出す前にリスナーを宣言する必要があります。

関連する問題