Angularjs 将全局变量添加到范围

Angularjs 将全局变量添加到范围,angularjs,Angularjs,我正在尝试建立一个游戏的用户界面,AngularJS似乎是完美的。我的所有游戏都在全局变量ig中ig看起来像这样: ig = { money: 100, lives: 3, ... }; 我想将ig.money和ig.live添加到控制器的作用域中,这样当游戏中的变量发生变化时,它会自动更新UI 我试过: $scope.$watch('ig.money', function() { $scope.money = ig.money; }); 但它不起作用。它表示ig为空。有人能给我指出正确的方

我正在尝试建立一个游戏的用户界面,AngularJS似乎是完美的。我的所有游戏都在全局变量
ig
中<代码>ig看起来像这样:

ig = { money: 100, lives: 3, ... };
我想将
ig.money
ig.live
添加到控制器的作用域中,这样当游戏中的变量发生变化时,它会自动更新UI

我试过:

$scope.$watch('ig.money', function() { $scope.money = ig.money; });
但它不起作用。它表示
ig
为空。有人能给我指出正确的方向吗?谢谢

不清楚您在何处以及如何定义全局变量

假设您已将变量定义为

<script type="text/javascript">
    var ig = { money: 100, lives: 3, ... };
</script>

或者,这将是一种更具角度的方式:

app.value('myGame',ig)
app.controller('AppController',[
    '$scope',
    '$window',
    function($scope,myGame) {
      $scope.ig = myGame;
    }
]);
或者你可以把你的游戏放在一个固定的或供应商或工厂或服务


这取决于您选择更适合您需要的方式

一个干净的方式是将所有游戏数据放在一个角度服务中,这是一个单例。然后,对数据的任何更改都可以广播到可以对该事件进行操作的控制器。通过依赖项注入,您可以使所有控制器都可以轻松访问带有游戏数据的服务。有一个很好的例子给出了一个简单的例子来说明如何做到这一点。

它在我的游戏中不起作用,但在我做的一个简单测试中起作用:。在我的游戏中,模板仅在调用test()函数时更新。我会调查的,但你的答案是正确的。非常感谢。我设法复制了我的游戏中发生的事情:。这一次,钱不是通过任何角度的方法更新的(就像我的游戏)。我必须按下测试按钮才能更新模板。有什么想法吗?
app.value('myGame',ig)
app.controller('AppController',[
    '$scope',
    '$window',
    function($scope,myGame) {
      $scope.ig = myGame;
    }
]);