我希望很少有与 UI 相关的全局变量(即打开菜单状态)。我决定把它们放进去,$rootScope
这样它们总是可以访问的。
这是我写的代码:
(function (angular) {
angular
.module("App", [])
.run(["$rootScope", function ($rootScope) {
angular.extend($rootScope, {
ui: {
menu: false,
...
}
});
}]);
})(angular);
我故意使用angular.extend
, 以确保保留对同一对象的连续操作。而且我认为它也比为任何对象一个一个地添加多个属性更干净和安全。
问题
上面的代码没有做任何事情。当我运行我的应用程序并通过调用检查根范围时:
$("body").scope().$root.ui
我得到undefined
直到其中的某些属性被我的应用程序上的指令ui
操纵。ng-click
只有这样我才能ui
得到一个引用......但它仍然不是我在run()
函数中定义的那个,而是ng-click
指令根据表达式生成的角度生成的对象属性。
我究竟做错了什么?