未捕获的TypeError:undefined不是函数(资产管道)

时间:2015-01-13 21:55:12

标签: javascript jquery asset-pipeline

我正在处理一个Announcement类,用于在调用事件时通过API加载信息。

Announcement = function Announcement (id) {

    var id = id;    
    var vars = {};

    this.load = function load () {
        $.ajax({
            url: '/api/announcements/' + id,
            dateType: 'json',
            async: false,
            success: function (data) {
                vars = data.announcement;
            }
        });     
    }

    this.getVars = function getVars() {
        return vars;
    }
}

这是我的活动:

$(window).ready(function () {
    Dynatable.selector.bind('dynatable:afterUpdate', function (rows) {
        $('.dy-button').on('click', function (event) {
            var record = $(this).attr('record');
            var Announcement = new Announcement(record);
            Announcement.load();
        });
    });
});

这两段代码位于不同的文件中,但它们与资产管道连接在一起。公告类首先加载。

当我到达时:

var Announcement = new Announcement(record);

它说:

Uncaught TypeError: undefined is not a function

过去一天我一直试图修复它。

3 个答案:

答案 0 :(得分:0)

从功能中删除公告名称。

Announcement = function Announcement (id) {

Announcement = function (id) {

或在功能之前删除var Announcement =

答案 1 :(得分:0)

你有var id = id,这应该是this.id = id

你不希望它是
Announcement = function Announcement(id){...
 应该是 function Announcment(id) {...

答案 2 :(得分:0)

原因是可变升降。您的代码正在执行,因为它是像这样编写的

$('.dy-button').on('click', function (event) {
  var record;
  var Announcement; 

  record = $(this).attr('record');
  Announcement = new Announcement(record);
  Announcement.load();
});

本地变量公告已覆盖公众变量。

这可能是good read以获取更多细节。