これは、Angular マテリアル、mdDialogs、およびスコープ変数に関する質問です。
- Stomp を使用して特定のトピックを購読しています。
- Stomp はサーバーから文字列を受け取り、スコープ変数に連結されます。
- ユーザーがボタンをクリックして mdDialog を表示します。
- mdDialog は、着信文字列の変更をテキストエリアに表示する必要があります。
でも・・・うまく動かない。変更を確認するには、ダイアログを閉じて再度開く必要があります。メイン ビュー (index.html) に textarea を追加しようとしましたが、textarea は正常に動作します。
Angular マテリアルの mdDialog 内にいるときにテキストエリアが変更されないのはなぜですか? それを解決するためのアイデアはありますか?
これはプランカーです。メイン ビュー (index.html) でランダム値が適切に更新されていることがわかりますが、ダイアログを開くと、値が適切に更新されません...
https://plnkr.co/edit/teC69Sg7UqNbouHxpT22
var angularInstance = angular.module('ExampleApp', ['ngMaterial', 'ngMessages']) ;
angularInstance.controller('ExampleCtrl', function ExampleCtrl($scope, $mdDialog, $mdMedia, $interval)
{
$scope.randomString = "" ;
$scope.initialization = function()
{
$interval($scope.addRandomChar, 1000) ;
}
$scope.addRandomChar = function()
{
$scope.randomString = $scope.randomString + "a" ;
}
$scope.openMyDialog = function(ev)
{
var useFullScreen = ($mdMedia('sm') || $mdMedia('xs')) && $scope.customFullscreen ;
$mdDialog.show({
controller: myDialogController,
templateUrl: 'myDialog.tmpl.html',
parent: angular.element(document.body),
targetEvent: ev,
clickOutsideToClose:true,
fullscreen: useFullScreen,
resolve:
{
randomString: function ()
{
return $scope.randomString ;
}
}
}) ;
}
});
function myDialogController($scope, $mdDialog, randomString)
{
$scope.randomString = randomString ;
$scope.close = function ()
{
$mdDialog.cancel() ;
};
}
どうもありがとう。