【问题标题】:MeanJS stack, debugging Angular error: fnPtr is not a functionMeanJS 堆栈,调试 Angular 错误:fnPtr 不是函数
【发布时间】:2015-10-14 23:42:26
【问题描述】:

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

TypeError: fnPtr is not a function

我假设我有一些命名或语法错误(基于thisthis SO 问题) 问题是我不知道在哪里寻找错误的命名或错误的语法,因为文件结构非常大('app' 和 'public' 映射是 484 个文件)。我没有进入todo.client.controller 也没有进入'todo.server.controller' 更新功能,因为那里有一个没有打印的控制台日志。编辑按钮是一个提交输入,但我不知道它接下来会去哪里。

代码:

片断'编辑'页面

<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 有经验的人可以为我指明开始调试的方向吗?

【问题讨论】:

  • 您的更新按钮不会调用控制器中的更新方法。将此添加到您的 标签 - ng-click="update()"
  • 就这么简单,谢谢!如果你做出回答,我会接受
  • 虽然更新功能恢复正常,但 fnPtr 错误仍然存​​在
  • 你能显示堆栈跟踪吗?
  • 这个错误多发生在代码有错别字的时候。请检查您的括号是否正确。

标签: javascript angularjs meanjs


【解决方案1】:

您尚未在“更新”提交按钮中添加 ng-click。

将您的代码更改为:

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

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

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

【讨论】:

    猜你喜欢
    • 2015-10-28
    • 2013-10-13
    • 2019-11-25
    • 1970-01-01
    • 1970-01-01
    • 2020-10-26
    • 1970-01-01
    • 1970-01-01
    • 2020-08-03
    相关资源
    最近更新 更多