UI 関連 (つまり、メニューを開く状態) のグローバル変数をいくつか用意したいと考えています。$rootScope
いつでもアクセスできるように、これらを配置することにしました。
これは私が書いたコードです:
(function (angular) {
angular
.module("App", [])
.run(["$rootScope", function ($rootScope) {
angular.extend($rootScope, {
ui: {
menu: false,
...
}
});
}]);
})(angular);
angular.extend
同じオブジェクトに対する連続した操作が確実に保持されるように、意図的に を使用しました。また、オブジェクトに複数のプロパティを 1 つずつ追加するよりもクリーンで安全だと思います。
問題
ただし、上位コードは何もしません。アプリケーションを実行し、次を呼び出してルート スコープを確認すると:
$("body").scope().$root.ui
アプリケーションのディレクティブによって操作されるundefined
プロパティまで取得します。そうして初めて参照が取得されます...しかし、それはまだ関数で定義したものではなく、ディレクティブが式ごとに生成したAngularによって生成されたオブジェクトプロパティです。ui
ng-click
ui
run()
ng-click
私は何を間違っていますか?