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
Javascript 为什么我的主干模型奇怪地嵌套在一个集合中,需要深入访问方法/属性?_Javascript_Backbone.js_Underscore.js - Fatal编程技术网

Javascript 为什么我的主干模型奇怪地嵌套在一个集合中,需要深入访问方法/属性?

Javascript 为什么我的主干模型奇怪地嵌套在一个集合中,需要深入访问方法/属性?,javascript,backbone.js,underscore.js,Javascript,Backbone.js,Underscore.js,我有一个集合和一个模型,它们都使用属性/选项来增加额外的功能。以下是模型(LoadRouteGroup): 以及集合(LoadRouteGroup): 它们被实例化为: var loadRouteGroup = new LoadRouteGroup({ entityType: "facility" }); // WORKS loadRouteGroup.fetchf(); // assign groupingType option to collection to denote wh

我有一个集合和一个模型,它们都使用属性/选项来增加额外的功能。以下是模型(LoadRouteGroup):

以及集合(LoadRouteGroup):

它们被实例化为:

var loadRouteGroup = new LoadRouteGroup({
    entityType: "facility"
});

// WORKS
loadRouteGroup.fetchf();

// assign groupingType option to collection to denote which URL to use
var loadRouteGroups = new LoadRouteGroups({
    model: loadRouteGroup
}, {
    groupingType: "facility"
});

var firstGroup = loadRouteGroups.at(0);

// DOESN'T WORK
firstGroup.fetchf();

// WORKS
firstGroup.attributes.model.fetchf();
我希望对
firstGroup.fetchf()
的调用能起作用。。。但事实并非如此。相反,为了访问该方法,我不得不奇怪地向下钻取并使用
firstGroup.attributes.model.fetchf()


这是怎么回事?这对我来说似乎很简单,但我始终无法找出我的集合和模型之间的关系有什么问题。

在扩展集合时而不是在实例化时指定模型。

集合定义应包括模型类型:

return Backbone.Collection.extend({
    // ....
    model: LoadRouteGroup
});
初始化集合时,传入模型数组:

var loadRouteGroup = new LoadRouteGroup({
    entityType: "facility"
});
var loadRouteGroups = new LoadRouteGroups([loadRouteGroup], {
    groupingType: "facility"
});

在初始化过程中,是否不能同时执行这两项操作(定义集合的模型和传入实体/分组类型)?在定义类时,应该指定模型类型,而不是初始化集合。主干中的每个集合应该只对应于一个模型类型,因此在定义集合时会指定它。Lukas问了同样的问题,但是:我不应该以任何一种方式来完成吗?
return Backbone.Collection.extend({
    // ....
    model: LoadRouteGroup
});
var loadRouteGroup = new LoadRouteGroup({
    entityType: "facility"
});
var loadRouteGroups = new LoadRouteGroups([loadRouteGroup], {
    groupingType: "facility"
});