2016-05-25 4 views
0

私は、Onsen UI、Monaca、AngularJSを使用して開発されたクロスプラットフォームアプリを持っています。AngularJSとOnsen UIを使用してコントローラから新しいページに移動

ユーザーが自分のビューのボタンをクリックすると、コントローラから新しいページに移動しようとしています。私はSO投稿THISから解決策を次のですが、私はエラーを得続ける:はTypeError:スコープで未定義のプロパティ「pushPage」を読み取ることができません$ scope.getDateAndPushPageを

は私が私の見解で表示するように設定しています。 ng-repeatを使用した日付のリストビューユーザーがリストビュー項目のいずれかをクリックすると、選択した日付項目が取得され、コントローラで使用して計算が実行されます。これが完了したら、計算を表示するために次のページに進む必要があります。

私のリストビューは、次のように見えるとデータに保存された日付のリストが表示されます。

私のビューコントローラで
<ul class="list"> 
    <li ng-repeat="myDate in data" class="list__item list__item--chevron" ng-click="getDateAndPushPage(myDate.date)")> 
     {{myDate.date}} 
    </li> 
</ul> 

私がしようとするごとに、上記の例のように新しいページをプッシュ以下の私のコード:

var dateReports = angular.module("dateReportsController", []); 
dateReports.controller("DateReportsController", function($scope, $http, $rootScope) 
{ 
    $scope.getDateAndPushPage = function (myDate) 
    {  
     var page = "date-report-details.html"; 
     console.log("Page: " + page); // OK here - outputs page: date-report-details.html 

     console.log("My Date: " + myDate); // OK here and do calculation 

     $rootScope.ons.myNavigator.pushPage(page); // Error here 
    } 
}); 

そして最後に私が持っている私のindex.htmlの中で、私のナビゲーターは、次のように定義される。

私は上記のSOの投稿で提供されているすべてのソリューションを試しましたが、どれも私のために働いているようです。私はすべてのコントローラが管理しやすくするために、別々のファイルに分割されるような方法でアプリケーションをセットアップしています。このために私のメインのapp.jsファイルがわからない、次のように見えるとイム問題があなたのコードはmyNavigator変数を見つけることができない

var app = angular.module("myApp", ['onsen', 'loginController', 'dateReportsController']); 
+0

HTML

<ons-navigator var="myNavigator" page="page1.html"></ons-navigator> 

私はあなたが各コントローラに個別のモジュールを作成するか、またはあなたのアプリでそれらを注入する必要はないと思います。あなたはすでに 'app.controller( 'ctrlName'、...)'としてそれらを初期化して、アプリケーションに彼らのことを知らせるでしょう。 また、アプリケーションの宣言を 'var myApp = angular.module(" myApp "、['onsen']);と変更し、このアプリケーションの上にコントローラを作成してみてください。 – seekers01

+0

提案していただきありがとうございますが、私のアプリを管理するこの方法は、1つのファイル内のすべてのコントローラを持つことが私の選択肢ではないので最も効率的です。アプリケーションが非常に大きくなっているので、ファイルを分離して管理しやすくする必要がありました。また、提示された提案は私の主な質問に答えるものではないようです。コントローラーから新しいページに移動する。 – heyred

+0

あなたのコードはmyNavigator変数を見つけることができません。 ' 'を使用して、 myNavigator ')。pushPage(page); ' – seekers01

答えて

0

どこから来ているこれです。変更してみてください:<ons-navigator id="myNavigator" page="login.html"></ons-navigator>

および使用

<ons-navigator var="myNavigator" page="login.html"></ons-navigator> 

$rootScope.ons.$get('#myNavigator').pushPage(page);

0

ページから別のページに移動するには、次のコードを使用することができます。コントローラ

$rootScope.myNavigator.pushPage('page2.html'); 
関連する問題