17643


onsen-uiのnavigatorを利用しての画面遷移で詰まりました。  
初心者のため、使い方から間違っているのかもしれまん。

下記のようなコードがあり、コントローラーAでmyNavigatorにpostpopのイベントをセットしています。  
このときに、b.htmlとc.htmlのどちらでmyNavigator.popPage()を実行してもアラートが表示されてしまいます。  
popPageでa.htmlに戻った時のみpostpopを発火させる方法はありますでしょうか？

ご教授のほどよろしくお願いします。

[code]

    //controller
    module.controller('A', function() {
      myNavigator.on("postpop", function() {
         alert("test");
      });
    });
    
    module.controller('B', function() {});
    module.controller('C', function() {});
    
    //a.html
    <ons-navigator var="myNavigator">
       <ons-page ng-controller="A">
          <div ng-click="myNavigator.pushPage('b.html')">ページB</div>
       </ons-page>
    </ons-navigator>
    
    //b.html
       <ons-page ng-controller="B">
          <div ng-click="myNavigator.popPage()">Aに戻る</div>
          <div ng-click="myNavigator.pushPage('c.html')">ページC</div>
       </ons-page>
    
    //c.html
       <ons-page ng-controller="C">
          <div ng-click="myNavigator.popPage()">Bに戻る</div>
       </ons-page>
    
[/code]


CC BY-SA 3.0
2015-10-14T08:06:54.510
17637
2015-10-14T09:40:20.813
12639
question
monaca onsen-ui
onsen-ui 特定のページからのpopPageのみpostpopを行いたい


`a.html(親)`に戻るのみなら`e.navigator.pages.length ==
1`でよいのですが、`b.html`から`a.html`に戻る場合なら`e.leavePage.name == "b.html"`の条件も必要となります。

[code]

    myNavigator.on("postpop", function(e) {
        if (e.navigator.pages.length == 1) {
            if (e.leavePage.name == "b.html") {
                alert("test");
            }
        }
    });
    
[/code]


CC BY-SA 3.0
2015-10-14T09:33:00.383
17643
2015-10-14T09:40:20.813
2015-10-14T09:40:20.813
9566
9566
17637
answer