グローバル変数(実際のグローバル変数ではなく、$rootScope
)を持つアプリがあります。私は{{ }}
式を使ってビューにそれを印刷する必要があります。現在のコントローラの変数$scope
をthisグローバル変数にどのように関連付けることができますか?このグローバル変数の最新の値が常に画面に表示されるようにします。印刷角度で表示するグローバル変数
EDIT:コード:
app.controller('placesCtrl', ['$scope','$rootScope',function($scope, $rootScope){
$scope.place = place;
}]);
var autocomplete,map,place = {};
place.name = "asdf";
function initAutocomplete() {
...
//Initialize google maps autocomplete
//Add event listener
autocomplete.addListener('place_changed', function() {
//update place
place = autocomplete.getPlace();
console.log(place);
if (!place.geometry) {
window.alert("No such city found!");
return;
}
});
}
はまであることに注意すべき新しいダイジェストサイクルが実行されると、getMyGlobal()は呼び出されないので、式はそれまで更新されません。したがって、グローバル変数がいくつかの角度プロセスの外で更新された場合、次のサイクルまで画面上で更新されません。 –
@PatrickEvans右、それを指摘してくれてありがとう。したがって、変数を更新するコードがAngularライフサイクル内にない場合(例えば、一部の非同期要求など)、その前後に '$ scope。$ apply'を呼び出すことを忘れないでください。 – floribon
もし '$ scope'にアクセスできるのであれば、実際にはそれを更新するべきであり、いくつかのグローバル変数ではありません。私の警告は、[this fiddle](https://jsfiddle.net/jhx8Lgqm/)のようにAngular以外の変数を完全に更新した場合、setTimeoutは変数を変更しますが、 '$ scope.apply( ) 'ので、ランダムなダイジェストが起こるまでビューは更新されません。 –