2016-07-13 15 views
-1

私はこれまでに10種類以上のディレクティブに関する質問を見てきましたが、今まで私のために働いたことはありませんでした。私のコントローラを認識させようとしていますsite.selectedUnitが私のカスタムディレクティブでselectedChannelの更新を変更しました。最初はうまくいきましたが、その後ng-clickはビュー情報を変更しません。 selectedChannelは私のchatListコントローラに登録されて保存されていますが、httpリクエストは再度呼び出されません。ディレクティブアップデートを実行して、クリック時にDomを更新するクエリを実行します

私がsite.html内のユニットをクリックすると、chatListビューでユニット番号のselectedChannelが変更されるため、httpリクエストが再度呼び出されていないと推測しています。

リスナをディレクティブまたはchatListコントローラに追加するにはどうすればよいですか?selectedChannelが変更されたときにhttpリクエストを再度呼び出すことはできますか?

+0

あなたは私たちに多すぎる断片を与えて、site.htmのコントローラのような重要なコードを除外しましたl、ディレクティブのテンプレート( 'views/chatList.html')。私はあなたのコントローラで定義されていない、このコントローラを使用している "vm"という変数を参照するような複数の問題を抱えていると思います。 "controller: 'ChatListController' 、controllerAs: 'chatList' "それは他の適切なコードを見ることなく、明らかなものです。私はあなたのコードでプランナーを設定して共有することをお勧めします。 – jbrown

+0

私のサイトコントローラには、ユニット配列に値を設定するhttpリクエスト以外のディレクティブと関連するものは何もありません。私はviews/chatList.htmlを追加しますが、重要な問題は3つのリストされたファイルにあります。 "controller: 'ChatListController as ChatList'"と "controller: 'ChatListController'、controllerAs: 'chatList'"の両方がディレクティブを設定するときに機能します。私は両方とも一緒に働いた。 –

+0

site.selectedUnitがコントローラ内で宣言されていると、そうでない場合とは異なる結果になるため、サイトコントローラが適切です。 – jbrown

答えて

1

私はあなたが提供したコードから伝えることができるベストは、あなたがそれ以外の場合は$ scope.siteの定義を追加

site.controller

いくつかの変更を加える必要がsite.selectedUnitだけでしょうHTMLを介してng-clickで定義されているという文脈で利用可能である必要があります。

$scope.site = { 
    selectedUnit: null 
}; 

chatList.directive

単離スコープを取り外し、それがコントローラにアクセス可能となるようにbindToController介しselectedChannel性を注入します。

.directive('chatList', function() { 
    return { 
    restrict: 'E', 
    bindToController: { 
     selectedChannel: '=' 
    }, 
    templateUrl: 'chatList.html', 
    controller: 'ChatListController', 
    controllerAs: 'chatList' 
    }; 
}) 

chatList.controller

ウォッチあなたの$ http.get()は、あなたがあまりにも多くあるだけでなく、他の問題を持っている

vm.tenants = []; 

$scope.$watch(angular.bind(vm.selectedChannel.id, function() { 

    // make http.get call here 
})) 

を呼び出すようにするselectedChannel.idへの変更についてこれをリストするにはここで作業してくださいplunker

+0

$ scope。$ watchは私が必要としていたものです。私は私のディレクティブやコントローラーでそれを必要としているのかどうかはわかりませんでしたが、あなたの提案をすべて実装した後、それはやりました。すべての助けに感謝します。それは私がその点に到達するまでの1日半の仕事でした。私のポストは仕事が一番簡単ではなかったが、あなたは本当に私を助けてくれた。 –

+0

ようこそ。 – jbrown

関連する問題