Стек MeanJS, отладка Ошибка Angular: fnPtr не является функцией

Я изучаю стек MeanJS (Mongo, Express, Angular, Node) и пишу простое веб-приложение todo. Я могу перечислить все задачи и создать новую. Когда я «редактирую» задачу, я сталкиваюсь с этой ошибкой:

TypeError: fnPtr is not a function

Я предполагаю, что у меня неправильное имя или синтаксис (на основе это и этот вопрос SO) Проблема в том, что я не знаю, где искать неправильное имя или плохой синтаксис, поскольку файловая структура довольно велика (карты «приложение» и «общедоступные» — это 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, который мог бы указать мне направление для начала отладки?


person RobSeg    schedule 24.07.2015    source источник
comment
ваша кнопка обновления не вызывает метод обновления в вашем контроллере. добавьте это в свой тег ‹input› - ng-click="update()"   -  person v1shnu    schedule 24.07.2015
comment
Это было так просто, спасибо! Если вы ответите, я приму   -  person RobSeg    schedule 24.07.2015
comment
Хотя функция обновления снова работает, ошибка fnPtr все еще присутствует.   -  person RobSeg    schedule 24.07.2015
comment
можешь показать трассировку стека?   -  person v1shnu    schedule 24.07.2015
comment
Эта ошибка чаще всего возникает, когда в коде есть опечатка. Пожалуйста, проверьте, правильно ли вы расставили все скобки.   -  person v1shnu    schedule 24.07.2015


Ответы (1)


Вы не добавили ng-click к кнопке отправки «Обновить».

Измените свой код на это:

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

Что касается ошибки fnPtr, добавьте полную трассировку стека, чтобы ее можно было проанализировать.

Также проверьте, закрыты ли в вашем коде все скобки, вы не используете одно и то же имя для двух переменных и опечаток.

person v1shnu    schedule 24.07.2015