【问题标题】:error is not a constructor错误不是构造函数
【发布时间】:2014-11-20 07:24:54
【问题描述】:

我是新来的主干和requirejs... 我正在开发一个小型画廊应用程序,我在 firefox firebug 中遇到了这个错误,而在 chrome 中它没有显示任何错误 chrome dev 工具......请帮助我 这是我的代码 PhotosCollectionjs

define([
'jquery',
'underscore',
'backbone',
'models/thumb/PhotoModel'
], function ($, _, Backbone, PhotoModel) {
var PhotosCollection = Backbone.Collection.extend({
    model: PhotoModel,
    url: '/photos?query=xxx',
    fetch: function (options) {

        options = options || {};
        .......
        Backbone.Collection.prototype.fetch.call(this, options);
    },
    parse: function (response) {
          ......
        return response.photos;
    }

});

return PhotosCollection;
 });

加载照片 js

 define([
 'jquery',
  'underscore',
  'backbone',
   'collections/thumb/PhotosCollection'

    ], function ($, _, Backbone, PhotosCollection) {
console.log(PhotosCollection); .... undefined(firebug) ... function (){return r.apply(this,arguments)} (chrome dev tool)

var loadPhotos = function (container, options) {
    var photos;
    photos = void 0;
    if (options) {
        photos = new PhotosCollection();

        options.collection = photos;

    }
   .....................
    ................
};
return loadPhotos;
 });

在萤火虫它给出错误 TypeError: PhotosCollection 不是构造函数

照片 = 新照片集合();

编辑 它暂时解决了....但现在又在几次刷新后我在萤火虫中收到相同的错误,但在 chrome 中没有错误...请有人帮助我

编辑 2 反复试验我发现它仅在使用断点调试时发生......如果我删除所有断点它没有给出任何错误......它与脚本的异步加载或其他有关吗???

【问题讨论】:

  • 我对该语言一无所知,但您似乎没有为没有参数的 PhotosCollection 对象定义任何构造函数。看起来 PhotosCollection 是一个变量,而您将它用作对象?
  • @Yushox 谢谢你的回复......我上传了我的答案......我所做的是否正确或你建议我的任何其他解决方案......你说它没有任何构造函数但是我查看了其他人的类似类型代码和用法,没有错误,唯一的区别是他们不使用 require js 而我确实使用它

标签: firefox backbone.js requirejs undefined backbone.js-collections


【解决方案1】:

我刚刚在 PhotosCollection js 中包含了初始化,现在它没有给出任何错误...我不知道到底是什么问题,但它得到了解决..... 但我有兴趣知道它的原因......因为只有萤火虫抛出错误而 chrome 没有......请给我一些见解

这是我的新 photosCollection js,带有空白初始化....

   define([
  'jquery',
 'underscore',
 'backbone',
 'models/thumb/PhotoModel'
 ], function ($, _, Backbone, PhotoModel) {
 var PhotosCollection = Backbone.Collection.extend({
 model: PhotoModel,
url: '/photos?query=xxx',
 initialize:function(options){},
fetch: function (options) {

    options = options || {};
    .......
    Backbone.Collection.prototype.fetch.call(this, options);
},
parse: function (response) {
      ......
    return response.photos;
}

  });

return PhotosCollection;
});

【讨论】:

    猜你喜欢
    • 2017-07-27
    • 2019-08-11
    • 2022-06-11
    • 2012-06-09
    • 2019-02-11
    • 1970-01-01
    • 1970-01-01
    • 2019-03-24
    相关资源
    最近更新 更多