2015-05-07 39 views
2

我是AngularJs的新手,現在我正在嘗試使用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代碼不起作用。有什麼問題?

我使用DashCtrlNewListCtrl對的,也許它很重要

+0

問題是否真的綁定了兩次?也就是說,如果你不綁定到'DashCtrl'中的'contacts',綁定到'NewListCtrl'中的'newUser'工作嗎? – Marein

+1

問題在於NewListCtrl的注入語法。該控制器的函數參數與數組中的字符串的順序不同。我確信這已經被回答了......試圖找到一個重複的問題/答案,但它比看起來更難:) –

+1

'$ firebaseArray'對象沒有'$ bindTo'方法。在使用項目集合時,使用'$ scope.contacts = $ firebaseArray(refToContacts)'。當使用單個對象*和*三向綁定時,使用'$ firebaseObject(refToUser)。$ bindTo($ scope,「newUser」)'。 –

回答

3

表面上的第一個問題是與NewListCtrl依賴注入語法。

當您指定依賴關係列表時,該順序很重要。所以這條線:

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

是指出角在特定的順序創建它的時候,而應該注入三個項目到控制器中。

但請注意,你的函數參數是不是在這個控制器相同的順序:

function($firebaseObject,$firebaseArray,$scope) 

這肯定會造成事情失控走在你的代碼。你認爲$scope確實是$firebaseArray,依此類推。

+0

斑點蘇尼爾!我完全忽略了這一點。 –