意味着js堆栈,调试Angular错误:fnPtr不是一个函数

MeanJS stack, debugging Angular error: fnPtr is not a function

本文关键字:函数 一个 fnPtr 堆栈 js 调试 Angular 错误 意味着      更新时间:2023-09-26

我正在学习MeanJS堆栈(Mongo, Express, Angular, Node)并编写一个简单的todo web应用程序。我可以列出所有待办事项,并创建一个新的。当我"编辑"待办事项时,我遇到了这个错误:

TypeError: fnPtr is not a function

我假设我有一些命名或语法错误(基于这个和这个SO问题)问题是我不知道在哪里寻找错误的命名或糟糕的语法,因为文件结构是相当大的("app"answers"公共"地图是484个文件)。我没有进入todo.client.controller或todo服务器。控制器的更新功能,因为那里有一个控制台日志没有被打印出来。编辑按钮是一个提交输入,但我不知道它下一步去哪里。

代码:

分段表单"编辑"页面

<div class="form-group">
  <input type="submit" value="Update" class="btn btn-default">
</div>

客户端控制器:

    // Update existing Todo
    $scope.update = function() {
        console.log('update');
        var todo = $scope.todo;
        todo.$update(function() {
            $location.path('todos/' + todo._id);
        }, function(errorResponse) {
            $scope.error = errorResponse.data.message;
        });
    };
服务器控制器:

/**Update a Todo*/
exports.update = function(req, res) {
console.log('todo controller');
var todo = req.todo;
todo = _.extend(todo, req.body);
Todo.update({_id: req.body._id}, req.body, function(err, update) {
//todo.save(function(err) {
    if (err) {
        return res.status(400).send({
            message: errorHandler.getErrorMessage(err)
        });
    } else {
        res.json(todo);
    }
});
};

谁有经验的MeanJS堆栈或Angular,可以指向我在一个方向开始调试?

您没有在"Update"提交按钮中添加ng-click。

把你的代码改成:

<div class="form-group">
  <input type="submit" value="Update"  ng-click="update()" class="btn btn-default">
</div>

对于fnPtr错误,添加完整的堆栈跟踪,以便对其进行分析。

还要检查你的代码是否关闭了所有的括号,你没有对两个变量和拼写错误使用相同的名称。