未捕获的TypeError:在AngularJS网页中,fn不是函数错误

时间:2015-10-30 12:05:38

标签: angularjs

我是AngularJS的新手。我有以下angularJS代码

(function () {
    getDataFactory = function ()
    {
        return {
            callWebApi: function (reqData)
            {
                alert(reqData);
            }
        }
    }
    patientCategoryController = function ($http, $scope, getDataFactory) {
        // The following line is the culprit. If this is commented, I dont get the error. 
        // But it works, ie. when UNcommented, I get the messagebox showing     
        // "someDataToPass"!! So whats wrong???
        angular.element(document).ready(getDataFactory.callWebApi('someDataToPass'));
    }
    patientCategoryController.$inject = ['$http', '$scope', 'getDataFactory'];
    angular.module('demoApp', []);
    angular.module('demoApp').controller('patientCategoryController', patientCategoryController);
    angular.module('demoApp').factory('getDataFactory', getDataFactory);    
}());

我找到了方法调用

angular.element(document).ready(getDataFactory.callWebApi('someDataToPass')); 

是问题所在。 所以我错过了一些非常基本的东西。有人可以指导我这个。 HTML是绝对的基本骨架。我在Chrome浏览器中收到此错误,右键单击,然后选择检查页面元素。

2 个答案:

答案 0 :(得分:3)

你正在传递一个void函数结果做document.ready方法。 这里有两个可能的修复:

  1. 使用document.ready
  2. 
    
    DbFunctions.TruncateTime(c.InDateTime.Value.Date) == date.Date
    
    
    
    

    1. 未使用document.ready

      angular.element(document).ready(function(){ getDataFactory.callWebApi('someDataToPass')); });

答案 1 :(得分:3)

你应该将函数体作为[row,col]参数传递,而不是函数返回值,所以这个:

ready

应该成为:

angular.element(document).ready(getDataFactory.callWebApi('someDataToPass'));

请在此处查看:https://api.jquery.com/ready/