@semolex

Как правильно передавать параметры рендера в Backbone?

Всем привет!
Имеется следующая проблема:
Решил переделать архитектуру своего тестового задания по Backbone слдующим образом.
Сначала у меня колекции фетчились прямо в View, в функции render. Услышал. что так делать нехорошо, поэтому переделываю так, чтоб колекция фетчилась в router, а данные передавались в view.
Попробовал делать так:
view:
define([
    'jquery',
    'underscore',
    'backbone',
    'form2js',
    "pages/test/collections/users",
    "pages/test/models/user",
    'text!pages/test/templates/users.html'
], function($, _, Backbone, form2js, UsersCollection, UserModel, UsersTemplate) {
    var UsersView = Backbone.View.extend({
        el: '#main_content',

        initialize: function(users) {
            this.users = users;
            _.bindAll(this, 'render', this);
        },
        render: function() {
            var that = this;
            var template = _.template(UsersTemplate, {
                users: users;
            });
            this.$el.html(template);
        }

И, собственно routes.

define([
        "pages/test/views/usersView",
        "pages/test/collections/users",
    ],
    function(usersView,  UsersCollection) {
        return Backbone.Router.extend({
            routes: {
                "users": 'users',
            },
            users: function() {
                users = new UsersCollection();
                users.fetch();
                console.log(users);
                if (typeof UsersView === "undefined") {
                    UsersView = new usersView();
                };
                UsersView.render({
                    users: users
                });
            }


Проблема вот какая:
Теперь ничего не рендерится, и на строчке UsersView = new usersView(); в консоли ошибка
routes.js: Uncaught TypeError: undefined is not a function
. Я понимаю, что делаю что то не так, но к сожалению не сильно знаком с JS чтобы решить проблему самостоятельно.
Буду благодарен за советы и ответы!

п.с. Правильно ли фетчить колекцию в router? Если нет, то где это нужно делать?
Спасибо!
  • Вопрос задан
  • 817 просмотров
Решения вопроса 1
k12th
@k12th
console.log(`You're pulling my leg, right?`);
А вы не забыли сделать return UsersView в конце pages/test/views/usersView?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
SummerWeb Ярославль
от 120 000 до 180 000 ₽
КРАФТТЕК Санкт-Петербург
от 60 000 до 80 000 ₽
Brightdata Тель-Авив
от 5 500 до 6 500 $
15 июн. 2024, в 12:28
40000 руб./за проект
15 июн. 2024, в 11:50
400 руб./за проект
15 июн. 2024, в 11:28
20000 руб./за проект