Я взял на себя исследовательский проект, и у меня все хорошо, за исключением того, что в последнее время я думаю, что неправильно понимаю некоторую структуру JS, реализованную в Backbone. Я запутался в структуре модели или коллекции и в том, возвращает ли она объект или функцию.
Проект имеет эту текущую структуру для моделей:
define([…], function(…) {
var measureModel = Backbone.Model.extend({
defaults: {…},
initialize: function(){…}
…
});
return measureModel; //here there is no function, so I assume its an object
});
и для коллекций:
define([…], function(…){
var measuresCollection = Backbone.Collection.extend({
model: measureModel,
initialize: function(){…}
});
return new measuresCollection(); //here I assume it is an function
});
Я сделал новые модели и коллекции с вышеуказанной структурой, но получил следующие ошибки, поэтому я также попробовал это:
define([…], function(…){
return Backbone.Collection.extend({ // here I just return the Object
model: newerModel,
initialize: function(){…}
});
});
Следуя этой первой структуре, в некоторых новых моделях и коллекциях я получаю ошибки Uncaught TypeError: object is not a function
, Uncaught TypeError: [Object object] is not a function
или Uncaught TypeError: undefined is not a function
, в зависимости от пропуска конечного оператора возврата или просто возвращая объект напрямую.
Я вызываю конструктор в другом представлении так: this.newerCollection = new NewerCollection();
- почему я получаю (любую) из этих ошибок, используя ту же структуру?
- Каковы различия между созданием переменной и ее возвратом и просто возвратом ее напрямую?
- почему я должен использовать один способ вместо другого?
this.newerCollection = new NewerCollection();
должно бытьthis.newerCollection = NewerCollection;
, если вы возвращаетеnew measuresCollection()
- person Sushanth --   schedule 09.07.2013