ページにチャットルームを配置するために使用するチャット ディレクティブがあります。
mod.directive('chat', function () {
return {
templateUrl: '/chat',
replace: true,
scope: {
chatID:'@chat',
},
controller: function ($scope, $element, $timeout) {
var id = $scope.chatID
...
},
link: function ...
}
})
HTML は次のようになります。
<div class="chat" chat="{{currentChatID}}" ui-view="currentChat"></div>
<div class="content" ui-view="mainContent"></div>
これは「標準」というファイルにあります
mod.config(function($stateProvider) {
$stateProvider.state('standard', {
views: {
'main': {
templateUrl: '/tmpl/standard',
controller: function($scope, $timeout) {
$scope.currentChatID = ''
$scope.setCurrentChatID = function(newID) {
$scope.currentChatID = newID
}
}
}
}
})
})
angularjs-ui-router を使用して、そのビュー内でチャットを提供するチャット ディレクティブを使用して親ビューを作成しています。これは、最初のページの読み込み時に正常に機能し、チャットが読み込まれます。しかし、ページ/チャット ルームを変更すると、別のコントローラーを使用してsetCurrentChatID()
. これによりcurrentChatID
、DOM のチャット要素が変更されます。チャット要素のプロパティが angularjs-batarang の新しい ID に変更されることもわかりますが、チャット ディレクティブのコントローラーは実行されません。これを適切に機能させるにはどうすればよいですか?chatID が変更されたときにチャットのコントローラーを有効にするにはどうすればよいですか?
ありがとう。