

いつもお世話になっております。  
OnsenUIを最新のv1.2.2にしたところ以下のようなコードのpushPageが動作しなくなってしまいました。

『 TypeError: Cannot read property 'pushPage' of undefined 』

というエラーが出てします。（ちなみにv1.2.1では動いておりました。）  
pushPageのところを

『 $scope.app.navi.pushPage("page.html"); 』

とすれば動くのですが、複数のnavigatorに対して、同一の子ページを使い回したいので「app.navi」というようにnavigatorの名前を指定したくありません。  
対策法をご教示ください。どうぞよろしくお願いいたします。

index.html (headの後半から)

[code]

     <script src="js/app.js"></script>  
    </head>
    
    <body ng-controller="AppController">    
    <ons-navigator animation="slide" var="app.navi">
      <ons-page>
          <ons-button modifier="light" ng-click="openpage();">Push</ons-button>
      </ons-page>
    </ons-navigator>
    
    <ons-template id="page.html">
      <ons-page>
          <ons-button modifier="light" ng-click="app.navi.popPage('page.html');">Pop</ons-button>
      </ons-page>
    </ons-template>
    </body> 
    </html>
    
[/code]

app.js

[code]

    var module = angular.module('app', ['onsen']);
    module.controller('AppController', function($scope) { 
        $scope.openpage = function() {
            $scope.ons.navigator.pushPage("page.html");
        };
    });
    
[/code]


CC BY-SA 3.0
2015-03-09T06:26:33.323
7639
2016-10-04T08:34:18.920
8759
question
onsen-ui
OnsenUIのNavigatorのpushpageについて


Onsen UIの最近のバージョンでは、`ons.navigator`という記述がサポートされなくなりました。そのため、下記のようにして`<ons-
navigator>`の`var`属性を明示的に指定し、それに対して`pushPage()`メソッドを呼び出すことで解決すると思います。

HTML側:

[code]

    <ons-navigtor var="myNavigator">
    
[/code]

JavaScript側:

[code]

    myNavigator.pushPage("page.html");
    
[/code]

なお、複数のナビゲーターで同一の子ページを使用することは問題ありません。  
逆に、複数のナビゲーターが同じ名前として定義することもできます。


CC BY-SA 3.0
2015-07-09T06:59:24.047
12193
2015-07-09T06:59:24.047
9028
7639
answer