2016-09-19 7 views
0

ionic viewページ内に工場から返された応答データを表示する際に問題が発生しています。問題は私が約束を守っている方法と関係していると私は信じていますが、なぜそれを突き止めることはできません。だから、私の問題へのロードマップを開始するには、ここに私は次のとおりです。

工場

.factory('profileFactory', function ($http, $q) { 
var config = { 
    headers: { 
     'MyKey': 'myvalue' 
    } 
}; 
this.getEmployee = function (userId) { 
    return $http.get('http://someurlpathtogoto' + userId + 'etc', config).then(function (response) { 
     console.log(response.data) 
     return response.data; 
    }) 
} 
return this; 
}) 

上記のコードは私が私のコントローラのために必要なJSONオブジェクトを返します。

コントローラ

.controller('EmployeeCtrl', ['$scope', 'profileFactory', function ($scope, profileFactory) { 

//Set back to false 
$scope.profileLoaded = true; 
$scope.serviceUnavailable = false; 

$scope.setId = function (userId) { 

    profileFactory.getEmployee(userId).then(function(arrItems){ 
     $scope.employee = arrItems; 
     $scope.firstName = $scope.employee.record[0].First_Name; 
     $scope.lastName = $scope.employee.record[0].Last_Name; 
    }; 
}]) 

私のページが表示されたら、私はそのように見えます:

イオンビュー(プロフィール)

<ion-view view-title="Profile" ng-controller="EmployeeCtrl" hide-nav-bar="true"> 
<ion-pane> 
    <!-- TODO: BACK BUTTON, NO TITLE --> 
    <ion-header-bar class="bar-stable"> 
     <h1 class="title">Ionic Blank Starter</h1> 
    </ion-header-bar> 
    <ion-content> 
     <div ng-show="serviceUnavailable"> 
      Directory service unavailable 
     </div> 
     <div ng-show="profileLoaded"> 
      <br /> 
      <center><img class="focus-img-circle" ng-src="default.png" /></center> 
      <center><b>{{firstName}} {{lastName}}</b></center> 
     </div> 
    </ion-content> 
</ion-pane> 
<ion-view> 

ユーザーはいくつかの情報を表示するために自分のプロフィールページにそれらを取る必要があるアプリの矢印ボタンを押すたびに、このすべてが呼び出されます。前のビューに次のコードが表示されます。

イオンビュー(検索結果)だから、基本的に人のタブをユーザーがクリックする

<ion-item class="item item-avatar item-button-right" ng-repeat="user in results" ng-controller="EmployeeCtrl"> 
      <img ng-src="data:image/png;base64,{{user.pic}}"> 
      <strong>{{user.first_name}} {{user.last_name}}</strong> 
      <div class="buttons" style="padding:20px;"> 
       <button type="button" class="button button-icon ion-ios-telephone-outline customSearchIcon" ng-click=""></button> 
       <a class="button button-icon ion-ios-arrow-right customSearchIcon" ng-click="setId(user.id)" href="#/tab/search/profile"></a> 
       <button type="button" class="button button-icon ion-ios-heart-outline customSearchIcon" ng-click="addFavorite(user.id, user.first_name, user.last_name, user.pic)"></button> 
      </div> 
     </ion-item> 

は、私の工場は含むJSONオブジェクトを返すようにRESTfulな呼び出しを行うために使用されるプロファイルにそれらを取りますそのユーザーに関するデータ。 Ionic Viewに何も表示されていないことを除きます。コントローラーにのユーザーIDをハードコードして、機能を取り除くとsetId()が動作しますが、それは明らかにオプションではありません。誰かが私が間違っていると具体的に何かを見ますか?これに何時間も執着していると、どんな助けも素晴らしいだろう。

私は多くのコードを残して、私の意見を理解しました。あなたが見る

EDIT

2つのビューが異なるイオンテンプレートです。したがって、を使用すると、ng-controller = "EmployeeCtrlは同じビューで2回表示されません。

答えて

1

間違えて、サービスを呼び出し、データをスコープ変数に格納してから2番目のビューにナビゲートします。 2番目のビューは最初のビューと同じコントローラを使用しますが、新しいコントローラは空のスコープでインスタンス化されているため、ビューは空です。

<a>タグの代わりに、プロファイルルートを変更して、 - tab/search/profile/:useridとアンカータグにはng-href= "#/tab/search/profile/{{user.id})"があり、プロファイルコントローラでは、クエリ文字列($location.search().userid)からユーザーIDを取得し、Ajax cal l。

+0

お返事ありがとうございました!これを今見てみると、あなたに戻ってきます。私は、ビューが入っている状態とスコープにどのように影響するのかについて、いくつかの読書をしています。まもなくあなたに戻ってきます。 – Sam5487

+0

ありがとうございました。あなたはそれがそうではないと思っていたとしても、空のスコープでインスタンス化されている新しいコントローラについてはまったく正しいものでした。私は単にSearchCtrlにコードを追加するだけで回避策を講じました。明らかに、私はこれを将来このようにしたくないし、提案したアプローチを使用したいが、シンプルなPOCの場合、これはあなたに感謝するだろう。 – Sam5487

+0

@ Sam5487 - うれしかったよ!ハッピーコーディング... – Developer

関連する問題