2016-11-12 11 views
0

現在、IonicとAngularJSを学習しています。私は現在、チュートリアルのウェブサイトで完全に動作するコードを調整していますが、自分のコードではありません。

私がやろうとしていることは次のとおりです。連絡先リストに情報があり、アイテムをクリックすると、関連するチャットに行きたいと思っています。ここで

は状態です:ここでは

​​

は、両方のコントローラは、以下のとおりです。

.service('ChatService', function(){ 
    return { 
chats: [ 
    { 
    id: "1", 
    message: "Chat Message 1" 
    }, 
    { 
    id: "2", 
    message: "Chat Message 2" 
    }, 
    { 
    id: "3", 
    message: "Chat Message 3" 
    }, 
    { 
    id: "4", 
    message: "Chat Message 4" 
    }, 
    { 
    id: "5", 
    message: "Chat Message 5" 
    } 
], 
getChats: function(){ 
    return this.chats; 
}, 
getChat: function(chatId) { 
    for(i=0; i<this.chats.length; i++){ 
    if(this.chats[i].id == chatId){ 
     return this.chats[i]; 
    } 
    } 
} 
    } 
}) 

、関係ページ(コンタクト):

.controller('ContactsController', function($scope, $state, $stateParams, ChatService) { 

$scope.toDiscover = function(){ 
    $state.go('discover'); 
}; 

$scope.toDiscussion = function(user_id1, user_id2){ 
    $state.go('conversation', { 
     id1: user_id1, 
     id2: user_id2 
    }); 
}; 

$scope.chats = ChatService.getChats(); 
}) 

.controller('ConversationController', function($scope, $state, $stateParams, ChatService) { 

$scope.toContacts = function(){ 
    $state.go('contacts') 
}; 

$scope.chatId = $stateParams.chatId; 
$scope.chat = ChatService.getChat($scope.chatId); 
}) 

そして、ここでは、と呼ばれるサービスです

<ion-view view-title="Contacts" ng-controller="ContactsController"> 

<ion-content class="content-img" scroll="" class="padding"> 
    <div class="under-header"></div> 

    <a ng-repeat="chat in chats" class="item item-avatar" ng-click="toDiscussion({{chat.id}}, {{chat.id}})"> 
     <img src="img/launchscreen.png"> 
     <h2><span class="contact-name"> ({{ chat.id }})</span></h2> 
     <p class="preview">Back off, man. I'm a scientist.</p> 
    </a> 
</ion-content> 

会話:

<ion-content class="content-img" scroll="" class="padding"> 
    <div class="under-header"></div> 
    <ion-item><b>Chat:</b> {{ chat.id }}</ion-item> 
    <ion-item><b>Message:</b> {{ chat.message }}</ion-item> 
</ion-content> 

<div class="bar bar-footer bar-light cheam-chatbar" keyboard-attach> 
    <div class="title"><input type="text" name="chatbox" placeholder="send message to"></div> 
</div> 

そこでここでは問題です:会話に、私はTEが問題なく情報を望んでアクセスすることができた場合。関連するチャット情報を見るためにアイテムをクリックすると、情報が表示されません。

私は自分のウェブサイトと私のIDEのコードを使いこなしており、問題を見つけられないようです。

誰かがこれがなぜ起こるか説明できますか?

ありがとうございます! (そして初心者の質問に申し訳ありません)

答えて

1

基本的にはアプローチは問題ありません!

2つの状態:1つの状態から別の状態にパラメータを渡すには、configセクションのapp.jsに適切な状態定義が必要です。したがって、あなたがそこに州を定義していることを確認してください - 経路を定義する方法とIonicでルーティングが一般的にどのように機能するかについての詳細な情報が必要な場合は、this page right hereをご覧ください。

だから、例として、あなたの状態は次のようになります。

$stateProvider.state(
    // other state definitions .. 
).state('somestate', { 
    url: '/state/:id', // ":id" defines the expected id param 
    templateUrl: 'templates/some-state.html', 
    controller: 'SomeStateCtrl' 
}) 

は、第二に、それは直接場所をmodifiyする必要はありません。 $状態サービスを注入し、他のものをすべて処理させてください!移行の場合は、次のようなものが必要になります。

$state.go('somestate', { 
    id : 1 
} 

これで完了です。あなたはすでに$ stateParamsサービスを介してIDにアクセスできます。これがあなたのアプリを動かすのに役立つことを願っています!

+0

ありがとうございました! 私のすべての州は明確に定義されており、 '$ location'アプローチを' $ state.go() 'アプローチに変更しました。 しかし、私はまだ会話の情報を取得することができないようですが、それは正常ですか? – TanguyH

+0

間違いなく正常です!;)ルーティング定義を投稿に追加できますか?それから実際の例を準備しようとします。あなたが私を待っていないか、自分でやりたいのであれば、それもやり遂げることができます - Ionic Playgroundは簡単な例を準備して共有するのに最適です。 http://play.ionic.io/これは、ほとんどの場合、問題を検出する最も簡単な方法です! – OClyde

+0

私はあなたが見ることができるように状態と経路を追加しました。私の会話リンクは '/#/会話/ 1/1'ですので、何とか情報を取得できますが、以下の情報は表示されません。多分私はここに何かを見逃しているのだろうか – TanguyH

関連する問題