AngularJS - 使整个应用程序都可以访问变量

AngularJS - make variable accessible to whole app

下面是一段连接 Firebase 数据库的代码。

我得到了 numberOfUsers 的值,现在我想在 html 中使用这个变量,就像 {{numberOfUsers}} 一样。

我不确定最好的方法是什么,或者我是否还需要使用控制器?对不起,如果这是一个愚蠢的问题,我还在学习 Javascript 和 Angular。

angular.module('myApp', ['ngRoute', 'firebase'])

  var userList = new Firebase("https://my-app.firebaseio.com/presence/");

  userList.on("value", function(snap) {
    numberOfUsers = snap.numChildren();
    console.log("Users = " + numberOfUsers);
  });

;

http://jsfiddle.net/HB7LU/11820/

任何帮助将不胜感激。

谢谢

使值可用的正式方法是将其放在 $rootScope 中,但最好将其作为服务的一部分公开。

尝试使用常量

http://jsfiddle.net/HB7LU/11818/

var myApp = angular.module('myApp',[]);

    myApp.constant('numUsers', 4);

    function MyCtrl($scope,numUsers) {
        $scope.name = 'Superhero';
        $scope.numUsers = numUsers;

        $scope.addUser = function(){
            numUsers++;
            $scope.numUsers = numUsers;
        }
    }

您可以使用常量来实现与 Lucas 所建议的相同的效果。但是,您可以像这样将每个值组合在一起,而不是为每个值创建一个常量服务:

angular.module("myModule")
.constant("CONST", { "KEY1" : "VALUE1", 
    "KEY2" : "VALUE2"});

这样你就可以收集一堆常量并像这样使用它:

CONST.KEY1
CONST.KEY2

编辑:你的问题似乎很不一样。

首先,您应该使用 AngularJS 风格的 Firebase。它被称为 AngularFire. You can find out more about it here。我将回答根据模型更改呈现 UI 的问题。 AngularJS 提倡 MVC 模式。您需要 Service、Controller 和 View(HTML 页)的对象来实现您想要的功能。

在我下面提供的示例中,所有内容都合并到一个文件中 (index.html),但理想情况下,代码应该分开。

<div ng-app="myapp">
    <div ng-controller="PostCtrl" >
        <ul>
            <li ng-repeat="post in posts"> <!-- $scope.posts of PostCtrl" -->
                <div>
                    <span>{{post}}</span> <!-- {{}} is used to render data -->
                </div>
           </li>
       </ul>
   </div>
    <script>
        //factory is a type of service. Services are used to write business logic or fetch data from the backend. Your Firebase related calls should come here. 
        angular.module("myapp", []).factory("myService", function($http) {
         return { 
          fetchData: function() { 
        return [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; //can also be a request to the backend returning data.
          }
         };
        });

         //a controller connects a service to the HTML file. $scope service provided by AngularJS is used to achieve this.
        angular.module("myapp").controller("PostCtrl", ["$scope", "myService", function($scope, myService) {
         //posts variable is used in HTML code to retrieve this data.
         $scope.posts = myService.fetchData();
        }]);
    </script>
</div>

要了解 AngularJS 的基础知识,您可以阅读 codeschool 教程。他们是互动的,从基础开始。