【问题标题】:Uncaught object- anonymous function Angular JS未捕获的对象 - 匿名函数 Angular JS
【发布时间】:2014-07-11 08:20:05
【问题描述】:

好吧,我放弃了!我需要一些帮助。我花了很长时间阅读所有在 S/O 上被问到的类似问题,但没有什么能解决我的问题。 我正在尝试将工厂添加到我的 angularFire 应用程序中。

我收到“未捕获对象(匿名函数)”错误 - 通过 Chrome 检查器,我确定了更具体的错误信息:https://docs.angularjs.org/error/$injector/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);

.....

您似乎无法将“type”作为参数传递给工厂函数,这将允许您在不同的 URL 上使用相同的函数。不能说我完全理解为什么。

谢谢大家!!

【问题讨论】:

  • 您能否用当前代码更新您的问题,以便我可以进一步帮助您?
  • @zazou: type 在这种情况下将是您尝试注入的依赖项。如果您没有声明它,角度不知道依赖type,例如名称为type 的工厂。无论如何,您最可能想做的是在您的工厂中定义一个函数,而不是将类型依赖项注入您的工厂。
  • @andreas 了不起的人。谢谢。

标签: angularjs dependencies firebase factory angularfire


【解决方案1】:

恕我直言,问题出在:var legalmvc = angular.module('legalmvc', ['FBRetrieve','ngRoute']); 删除 FBRetrieveentry。它不是外部模块,而是您的工厂。

您很可能想使用:

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

您应该注入 $firebase 而不是创建新对象 new Firebase,其背后的基本原理在这里解释:https://docs.angularjs.org/guide/unit-testing

【讨论】:

  • 谢谢!正如我向 WB 提到的,我遇到了另一个问题。它错误提示未正确注入/定义 FBRetrieve。我将控制器签名更改为尝试解决问题:“legalmvc.controller('FormCtrl',["$scope","FBRetrieve", function ($scope, FBRetrieve){.." - 有什么想法吗?谢谢!我非常感谢您的帮助:)
【解决方案2】:

你不应该在创建你的模块时注入你的工厂,因为工厂是在它已经知道的模块上注册的。

如果我错了,请纠正我,但模块声明只接受其他模块的注入。

因此,您只需从您的代码中删除模块创建中的 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){
       ...
}]);

希望对你有帮助。

【讨论】:

  • 非常有帮助,非常感谢! @安德烈亚斯。不幸的是,我遇到了另一个错误。 “docs.angularjs.org/error/$injector/…”“错误:[$injector:unpr] 未知提供者:typeProvider
猜你喜欢
  • 1970-01-01
  • 2012-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-06
  • 2016-07-12
  • 1970-01-01
相关资源
最近更新 更多