2016-03-22 23 views
1

私はすべての例を見て、私のIonicプロジェクトと統合しようとしましたが失敗しました。ここまで私がこれまで持っていたことがあります。Ionicアプリケーションのページ間でデータを渡す方法

私は、コントローラとルートのために、私は

(agentSchedule.html) 

<ion-view style="" title="Agent Schedule"> 
<ion-content class="has-header" overflow-scroll="true" padding="true"> 
    <ion-refresher on-refresh="doRefresh()"> 
    </ion-refresher> 
    <div ng-controller="agentScheduleCtrl"> 
     <ion-list style=""> 
      <ion-item class="item-icon-right item item-text-wrap item-thumbnail-left" ng-repeat="user in users"> 
      <img ng-src="{{ user.image }}"> 
      <h2>{{ user.fname }} {{ user.lname }}</h2> 
      <h4>Role : {{ user.jobtitle }}</h4> 
      <h4>Username : {{ user.username }}</h4><i class="button-icon icon ion-ios-arrow-forward"></i> 
      </ion-item> 
     </ion-list> 
    </div> 
</ion-content> 
ここ

にJSONファイルをロードするイムhtmlページを持っているcreator.ionic.com

を使用して作成したプロジェクトをされて使用していますそのページ

.controller('agentScheduleCtrl', function($scope, $http, $timeout) { 
    var url = "http://www.otago.ac.nz/itssd-schedule/mobileappdevice/services/getUsers.php"; 
    var url = "users.json"; 
    $http.get(url).success(function(response) { 
     $scope.users = response; 
}); 

.state('menu.agentSchedule', { 
    url: '/page4', 
    views: { 
    'side-menu21': { 
    templateUrl: 'templates/agentSchedule.html', 
    controller: 'agentScheduleCtrl' 
    } 
    } 
}) 

私は使用したい別のページですRNAMEは、その後、どのように次のページにuser.username JSON変数を渡すためにここでは、そのページ

.controller('specificAgentDetailsCtrl', function($scope) { 

}) 

.state('menu.specificAgentDetailsCtrl', { 
url: '/page9', 
views: { 
    'side-menu21': { 
    templateUrl: 'templates/specificAgentDetailsCtrl.html', 
    controller: 'specificAgentDetailsCtrl' 
    } 
} 
}) 

ためのコントローラとルートがある私は

(specificAgentDetails.html) 

<ion-view style="" view-title="Agent Specific Schedule"> 
<ion-content class="has-header" overflow-scroll="true" padding="true"> 

</ion-content> 
</ion-view> 

そこから行くの任意のページで使用しますグローバル変数として?

すべてのヘルプは素晴らしいだろう - 真のほとんどのイオン性のアプリケーションはSPAのように設定されている円

+0

AngularはSPAフレームワークです。あなたは1(!!!).htmlページを持っていて、その中にいくつかの.htmlページではなく、ビューを切り替えるはずです。 – shershen

+0

Ionicの新機能は、creator.ionic.comで作成した方法です。使用しているフォーマットを使用したアイデアはどれですか? –

答えて

2

に回ってイムは、だから何@shershenが言ったことは、何をやろうとしていることは、「イオン性」のものではありませんそれはもっとAngularJSのことです。ユーザー情報を保持し、それを他のコントローラと共有するためのサービスをセットアップする必要があります。

  1. データを共有するファクトリを作成します。
  2. 工場を最初のコントローラに注入して設定します。
  3. 工場を2番目のコントローラに注入して取り出します。

Share data between AngularJS controllers

あなたが/ OOPにセットされますに精通している場合、あなたは何の問題もないはずです。

2番目のコントローラで次に
.factory('Data', function() { 
var user = {}; 
return { 
    getUser: function() { 
     return user; 
    }, 
    setUser: function (userparameter) { 
     user = userparameter; 
    } 
}; 
}) 
.controller('agentScheduleCtrl', function($scope, $http, $timeout, Data) { 
var url = "http://www.otago.ac.nz/itssdschedule/mobileappdevice/services/getUsers.php"; 
var url = "users.json"; 
$http.get(url).success(function(response) { 
    Data.setUser(response); 
    $scope.users = response; 
}); 

.controller('specificAgentDetailsCtrl', function($scope, Data) { 
    $scope.user = Data.getUser(); 
}) 

は、ビューとコントローラ間の構文が正しいことを確認します。私はユーザーを使用しているユーザーを使用しています。コントローラーにブレークポイントを設定して、そこに何が起こっているのかを確認してください。

+0

良い男 - 私はそれを試してみる。うまくいけば私はそれのまわりで私の頭を得ることができる –

+0

OKは同じページ内で働いている、私はどのように別のページに変数を渡すのですか? –

+0

ページありません。 Think Controller。コントローラ間でデータを渡したいとします。実際には状態ですが、ページのコンセプトはプロジェクトには関係しません。なぜなら、ビューにルーティングしていることに気づいたからです。今度は、2番目のコントローラで共有ファクトリを注入し、次にユーザーオブジェクトを取得します。 –

0

私は少し一般的な工場を使って仕事をしています。

.factory('LocalRepo', function() { 
    var data = {} 
    return { 
     Get: function (key) { 
      return data.key; 
     }, 
     Set: function (key, val) { 
      return data.key = val; 
     } 
    } 
}) 

.controller('One', function($scope, LocalRepo) { 
    //Set in first controller 
    //TODO: $scope.users = .... from your call 
    LocalRepo.Set('users', $scope.users); 
}) 

.controller('Two', function($scope, LocalRepo) { 
    //Get in second controller 
    $scope.users = LocalRepo.Get('users'); 
}) 

ここでは、非常にシンプルなソリューションが何であれ、あなたはコントローラ

0

間たく設定するために使用します。 $windowを使用すると、すべてのコントローラ、サービスなどでデータがグローバルに保持されます。

.controller('agentScheduleCtrl', function($scope, $http, $timeout,$windows) { 
    $window.users = []; 
    var url = "http://www.otago.ac.nz/itssd-schedule/mobileappdevice/services/getUsers.php"; 
    var url = "users.json"; 
    $http.get(url).success(function(response) { 
     $window.users = response; 
    }); 
}) 

他のコントローラに依存関係として$windowを注入して、あなたは$window.usersのようにアクセスすることができます。

誰かを助けることを願っています。

関連する問題