Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Backbone.js 主干模型是一个函数?_Backbone.js_Reactjs - Fatal编程技术网

Backbone.js 主干模型是一个函数?

Backbone.js 主干模型是一个函数?,backbone.js,reactjs,Backbone.js,Reactjs,我有以下函数,调用时失败: getAll: function() { return _todos.toJSON(); } \u todos.toJSON不是一个函数,它告诉我 打印\u todos出于某种原因为我提供了一个函数函数child() 为什么会这样 这是我的主干。型号: var _todos = Backbone.Model.extend(); getAll()函数位于我的集合中: var TodoCollection = Backbone.Collection.exten

我有以下函数,调用时失败:

getAll: function() {
    return _todos.toJSON();
}
\u todos.toJSON不是一个函数,它告诉我

打印
\u todos
出于某种原因为我提供了一个函数
函数child()

为什么会这样

这是我的
主干。型号

var _todos = Backbone.Model.extend();
getAll()
函数位于我的
集合中

var TodoCollection = Backbone.Collection.extend({
    model: _todos,
    getAll: ...
});
编辑:

我实际上是在用React连接主干网,所以这可能会改变我的做法

除了
getAll
之外,我还有:

areAllComplete: function() {
    return _.every(this.pluck('complete'), true);
 }
我一直在关注的一个问题似乎将
getAll
areAllComplete
放在
模型中,根本不使用
集合。我搞不懂它的意思,因为我想让它一直保持安静,我添加了
集合
,并移动了
getAll
,还有一个在里面

也许,这不是我想要的

编辑2:

根据警告,
getAll
的输出应该是
对象
而不是
数组
。我可能应该将这些函数添加到
模型
而不是
集合
。我们需要更多地考虑这个问题

我认为这变成了另一个问题……

collection属性用于指定集合包含的模型类,并用于在将原始数据传递到集合时创建适当的模型。此外,根据您的代码,如果它确实起作用,您将拥有一个只有一个模型的集合

除此之外,为了获得集合中所有模型的JSON,您可以调用它的方法

例如
todoCollection.toJSON()

或者,如果您特别希望在getAll函数中使用它(可能您希望在返回数据之前执行其他操作),您可以执行以下操作

var TodoCollection = Backbone.Collection.extend({
    model: Todo,
    getAll: function () {
      //do something
      return this.toJSON();
    }
});

//here we are passing in the data directly, but you might get it with a fetch call
var todoStore = new TodoCollection(models); 
var todosJson = todoStore.getAll();
另一个需要注意的是主干命名是对类使用PascalCase,对实例使用camelCase。

collection属性用于指定集合包含的模型类,并用于在将原始数据传递到集合时创建适当的模型。此外,根据您的代码,如果它确实起作用,您将拥有一个只有一个模型的集合

除此之外,为了获得集合中所有模型的JSON,您可以调用它的方法

例如
todoCollection.toJSON()

或者,如果您特别希望在getAll函数中使用它(可能您希望在返回数据之前执行其他操作),您可以执行以下操作

var TodoCollection = Backbone.Collection.extend({
    model: Todo,
    getAll: function () {
      //do something
      return this.toJSON();
    }
});

//here we are passing in the data directly, but you might get it with a fetch call
var todoStore = new TodoCollection(models); 
var todosJson = todoStore.getAll();

另一个需要注意的是主干命名是对类使用PascalCase,对实例使用camelCase。

这是因为
backbone.Model.extend
返回一个构造函数。当您通过
model
属性将其传递给集合时,您只是让集合知道它应该持有哪种模型

要获取整个集合的JSON,请在集合实例上调用
toJSON()

var collection = new TodosCollection();
// add models
collection.toJSON();
如果您需要一个特定模型的JSON,那么通过集合API(
at
findWhere
get
等)获取对它的引用,并对该引用调用
toJSON()

var model = collection.at(0);
model.toJSON();

这是因为
Backbone.Model.extend
返回一个构造函数。当您通过
model
属性将其传递给集合时,您只是让集合知道它应该持有哪种模型

要获取整个集合的JSON,请在集合实例上调用
toJSON()

var collection = new TodosCollection();
// add models
collection.toJSON();
如果您需要一个特定模型的JSON,那么通过集合API(
at
findWhere
get
等)获取对它的引用,并对该引用调用
toJSON()

var model = collection.at(0);
model.toJSON();

我懂了。如果要在我的
集合中保留我的
getAll()
,因为它还没有定义,我如何进行调用<代码>此。
因作用域而不起作用。或者您建议将该功能粘贴到外部?我希望能够调用
TodoStore.getAll()
其中
TodoStore
集合的一个实例
。您仍然可以在集合中包含
getAll()
函数,它将在TodoCollection原型上定义。要使用它,您需要创建一个集合实例,类似于
var TodoStore=new TodoCollection()ToDoStore.getAll()其中my
getAll()
返回
TodoCollection.toJSON()
?我得到了
TodoCollection.toJSON不是一个函数
@Pushkin我已经更新了我的答案,希望它能澄清一点(除非我误解了你的意图)。哈哈,也许我不明白我想做什么。我更新了我的问题。我明白了。如果要在我的
集合中保留我的
getAll()
,因为它还没有定义,我如何进行调用<代码>此。
因作用域而不起作用。或者您建议将该功能粘贴到外部?我希望能够调用
TodoStore.getAll()
其中
TodoStore
集合的一个实例
。您仍然可以在集合中包含
getAll()
函数,它将在TodoCollection原型上定义。要使用它,您需要创建一个集合实例,类似于
var TodoStore=new TodoCollection()ToDoStore.getAll()其中my
getAll()
返回
TodoCollection.toJSON()
?我得到了
TodoCollection.toJSON不是一个函数
@Pushkin我已经更新了我的答案,希望它能澄清一点(除非我误解了你的意图)。哈哈,也许我不明白我想做什么。我已经更新了我的问题。