2014-07-11 45 views
1

好吧,我放棄!我需要一些幫助。我花了很長時間閱讀所有在S/O上提出的類似問題,並沒有什麼能夠幫助我解決問題。 我正在嘗試向我的angularFire應用程序添加一個工廠。未被捕獲的對象 - 匿名函數Angular JS

我得到了「未捕獲的對象(匿名函數)」錯誤 - 通過Chrome檢查我已經確定更具體的錯誤信息:https://docs.angularjs.org/error/ $噴油器/ NOMOD P0 = ngLocale%22

這裏是我的HTML腳本的信息? :

<script src="//cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.18/angular.js"></script> 
<script src="js/angular-route.js"></script> 
<script src="js/app.js"></script> 
<script src="js/controllers.js"></script> 
<script src="js/factories.js"></script> 

<script src='https://cdn.firebase.com/js/client/1.0.17/firebase.js'></script> 
<script src='https://cdn.firebase.com/libs/angularfire/0.7.1/angularfire.min.js'></script> 

這裏是我的controller.js:

legalmvc.controller('FormCtrl','FBRetrieve', function FormCtrl($scope, $location, FBRetrieve, $firebase) { 
    var url = 'https://legalcitator.firebaseio.com'; 
    var fireRef = new Firebase(url); 



    $scope.addCase = function() { 
     $scope.FireBaseCases = new Firebase('https://legalcitator.firebaseio.com/case'); 
     $scope.caseData = {}; 

     var newAuthor = $scope.newAuthor; 
     var newJournal = $scope.newJournal; 
     var newArticleName = $scope.newArticleName; 
     var newYear = $scope.newYear; 

     if (!newAuthor.length || !newArticleName.length || !newJournal.length || newYear === null) { 
      return; 
     } 
     newAuthor = $scope.newAuthor.trim(); 
     newJournal = $scope.newJournal.trim(); 
     newArticleName = $scope.newArticleName.trim(); 

     var newCaseRow = $scope.FireBaseCases.child(newAuthor); 
     newCaseRow.set({ 
      type: 'Case', 
      author: newAuthor, 
      journal: newJournal, 
      articleName: newArticleName, 
      year: newYear } 
     ); 


     $scope.newAuthor = ''; 
     $scope.newJournal =''; 
     $scope.newYear =null; 
     $scope.newArticleName= ''; 

    }; 





}); 

這裏是我的factory.js:

legalmvc.factory('FBRetrieve', function(type){ 

    var biblioRef = new Firebase('https://legalcitator.firebaseio.com/'+type); 

    biblioRef.on('value', function(data) { 
     if (data.val() === null) { 
      return; 
     } 

     return data; 


    }); 

}); 

這裏是app.js

var legalmvc = angular.module('legalmvc', ['FBRetrieve','ngRoute']); 

將深深,深深的感激,如果有人能夠給我一個手,這件事情給我一個瘤!

山姆

編輯:

的問題是,我試圖注入我廠「FBRetrieve」和外部模塊。我刪除了這一點,那麼我面臨的問題是在此代碼

legalmvc.factory('FBRetrieve', function(type){ 

var biblioRef = new Firebase('https://legalcitator.firebaseio.com/'+type); 

..... 

看來,你不能在通過「類型」作爲工廠函數的參數,這將允許您使用相同的功能上的不同網址。不能說我明白爲什麼。

謝謝你們!

+0

你可以用當前的代碼更新你的問題,所以我可能能夠幫助你進一步? –

+0

@zazou:在這種情況下,'type'就是你試圖注入的依賴關係。如果你沒有聲明它,angular就不知道依賴類型'type'名稱爲「type」的工廠。無論如何,你最可能要做的就是在你的工廠定義一個函數,而不是在你的工廠注入類型依賴。 – Andreas

+0

@andreas令人驚歎的人。謝謝 。 – zazou

回答

1

Imho問題出在:var legalmvc = angular.module('legalmvc', ['FBRetrieve','ngRoute']);刪除FBRetrieve條目。這不是你的工廠的外部模塊。

你最有可能想使用:

var legalmvc = angular.module('legalmvc', ['firebase','ngRoute']); 

你應該注入$firebase,而不是創建新的對象new Firebase,這背後的理由是這裏解釋:https://docs.angularjs.org/guide/unit-testing

+0

感謝!正如我提到的世界銀行我遇到了一個不同的問題。它錯誤表明FBRetrieve沒有被正確注入/定義。我改變了我的控制器簽名,試圖解決這個問題:「legalmvc.controller('FormCtrl',[」$ scope「,」FBRetrieve「,function($ scope,FBRetrieve){..」 - any ideas?thanks!i非常感謝你的幫助:) – zazou

1

對你不應該注入你的工廠因爲工廠在已經知道它的模塊上註冊,所以創建你的模塊。

糾正我,如果我錯了,但模塊聲明只接受注入其他模塊。

因此,從您的代碼中,您只需從模塊創建中刪除FBRetrieve注入。 它變爲:

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

當你的工廠和你的控制器都在同一模塊上,它會創建控制器時,解決它。

如果你的工廠是另一個模塊上,那麼你將有:

var factoryModule = angular.module("factoryModule"); 
factoryModule.factory('FBRetrieve', function(type){ 
    ... 
} 

var legalmvc = angular.module('legalmvc',['factoryModule', 'ngRoute']); 
legalmvc.controller('controller',['FBRetrieve', '$scope', 
    function(FBRetrieve, $scope){ 
     ... 
}]); 

希望它能幫助。

+0

非常有幫助,非常感謝! @Andreas。 不幸的是我收到了一個不同的錯誤。 「https://docs.angularjs.org/error/$injector/unpr?p0=typeProvider%20%3C-%20type%20%3C-%20FBRetrieve」 的「錯誤:[$注射器:unpr]未知提供商:typeProvider < - type < - FBRetrieve「。這表明我「確保依賴性被定義並且拼寫正確」。 再次因爲我覺得工廠已被正確定義而被卡住了。 我改變了我的控制器簽名,看起來像這樣: legalmvc.controller('FormCtrl',[「$ scope」,「FBRetrieve」,function($ scope,FBRetrieve){ 是這樣嗎? – zazou

相關問題