私のAngularアプリケーションには、スコープが分離されたディレクティブがあります。ディレクティブはそのスコープで文字列パラメーターを取得します。この値は非同期プロセスで親スコープによって初期化される可能性があるため、値を使用する準備ができたときに親によって解決される promise も取得します。
奇妙なこと: プロミスが解決されたとき、ディレクティブのスコープの値はまだ定義されていませんが、親コントローラーには値があります。
私が経験したことの例については、このプランカーを参照してください: https://plnkr.co/edit/WLILKaO95xWwU2RF29oX?p= preview
コントローラーで:
$scope.defer = $q.defer();
// to simulate an async operation
$timeout(function(){
$scope.ctrlValue = 'Hi';
$scope.defer.resolve();
});
ディレクティブで:
scope.valuePromise.then(function(){
alert(scope.value);
});
重要な注意: コードの 'alert' 行を $timeout のブロックでラップすると、scope.value は正しい値になります。約束が解決されたときに角度がダイジェストを実行していないようです。
何か案は?