Разберём подробнее, что происходит:
1.
main.jsrequire([
'backbone',
'views/app',
'routers/router'],
function (Backbone, AppView, Workspace) {
// ...
new AppView();
});
Мы просто создаём представление AppView. Да мы вроде бы ничего в него не передаём при создании. Значит нужно идти дальше и разбираться, что происходит во views/app.
2.
views/app.js
И вот тут мы уже видим в зависимостях и коллекцию todo моделей, и внутреннее представление для элемента todo:
define([
'jquery',
'underscore',
'backbone',
'collections/todos', // <= Коллекция Todos
'views/todos', // <= Представление для элемента todo
'text!templates/stats.html',
'common'
], function ($, _, Backbone, Todos, TodoView, statsTemplate, Common) {
var AppView = Backbone.View.extend({
// ...
});
return AppView;
});
Вот к какому выводу можно прийти:
Представление views/app создаётся только один раз. В нём жестко прописана зависимость от конкретной одной-единственной коллекции collections/todos, поэтому ничего передавать внутрь не нужно. Если бы у нас было несколько несвязных списков todo, пришлось бы убрать эту жесткую зависимость от коллекции collections/todos в views/app, и тогда мы бы действительно создавали несколько AppView, передавая в каждый свой экземпляр коллекции collections/todos.
3.
views/app.js
Заглянув внутрь AppView, найдём пример создания нового представления TodoView с передачей внутрь новой модели:
4.
collections/todos.js
Аналогично можно заглянуть внутрь коллекции collections/todos и увидеть там зависимость от models/todo и рассмотреть, как она там используется.