使用$ bindTo两次遇到麻烦

时间:2015-05-07 19:01:36

标签: javascript angularjs firebase ionic-framework angularfire

我是AngularJs的新手,现在我正在尝试使用Firebase。

这是我的Firebase数据:

pavlovdog
|
 ---facebook: "facebook.pavlovdog.com"
|
 ---twitter: "@pavlovdoggy"

我的JavaScript代码:

angular.module('starter.controllers', ['firebase'])

.controller('DashCtrl', ['$scope','$firebaseObject','$firebaseArray',
function($scope,$firebaseObject,$firebaseArray) {

    // Syncing to firebase
    var ref = new Firebase("https://#####.firebaseio.com/pavlovdog/");
    var syncObject = $firebaseArray(ref); 
    syncObject.$bindTo($scope, "contacts");
}])

.controller('NewListCtrl',['$scope', '$firebaseObject','$firebaseArray', 
    function($firebaseObject,$firebaseArray,$scope){
        var ref = new Firebase("https://#####.firebaseio.com/pavlovdog/");
        var syncObject = $firebaseArray(ref);
        syncObject.$bindTo($scope,"newUser");

}])

DashCtrl中,一切正常,我可以使用$scope.contacts。但是在NewListCtrl中,simular代码不起作用。问题是什么?

我在NewListCtrl之后立即使用DashCtrl,这可能很重要

1 个答案:

答案 0 :(得分:3)

表面上,第一个问题是NewListCtrl的依赖注入语法。

指定依赖项列表时,顺序很重要。所以这一行:

.controller('NewListCtrl',['$scope', '$firebaseObject','$firebaseArray',

声明Angular应该在创建控制器时按照特定顺序向控制器注入三个项目。

但请注意,您的函数参数在此控制器中的顺序不同:

function($firebaseObject,$firebaseArray,$scope)

这肯定会导致代码中的内容变得混乱。您认为$scope的确是$firebaseArray,依此类推。