MeanJS stack การดีบักข้อผิดพลาดเชิงมุม: fnPtr ไม่ใช่ฟังก์ชัน

ฉันกำลังเรียนรู้สแต็ก MeanJS (Mongo, Express, Angular, Node) และเขียนเว็บแอปสิ่งที่ต้องทำง่ายๆ ฉันสามารถแสดงรายการสิ่งที่ต้องทำทั้งหมดและสร้างรายการใหม่ได้ เมื่อฉัน 'แก้ไข' สิ่งที่ต้องทำ ฉันพบข้อผิดพลาดนี้:

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 stack หรือ 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 ให้เพิ่มการติดตามสแต็กทั้งหมดของคุณเพื่อให้สามารถวิเคราะห์ได้

ตรวจสอบด้วยว่าโค้ดของคุณปิดวงเล็บทั้งหมดหรือไม่ คุณไม่ได้ใช้ชื่อเดียวกันสำหรับ 2 ตัวแปรและการพิมพ์ผิด

person v1shnu    schedule 24.07.2015