2014-11-18 5 views
0

Я новичок в backboneJs и после учебника here. Я создаю маршрут для/users и делаю то же самое, что и в учебнике, но не получаю 404, тогда как в учебнике его работа отлично.BackboneJs: 404 Не найдено

Мой код:

<script> 

    var Users = Backbone.Collection.extend({ 
     url: '/users' 
    }); 

    var UserList = Backbone.View.extend({ 
     el: '.page', 
     render: function() { 
      var users = new Users(); 
      users.fetch({ 
       success: function(users) { 
        var tempalte = _.tempalte($('#user-list-template').html(), {users: users.models}); 
        this.$el.html(template); 
       } 
      }) 
     } 
    }); 

    var Router = Backbone.Router.extend({ 
     routes: { 
      '': 'home' 
     } 
    }); 

    var userList = new UserList(); 

    var router = new Router(); 
    router.on('route:home', function() { 
     userList.render(); 
    }); 

    Backbone.history.start(); 
</script> 

HTML Body

<div class="container"> 
    <h1> User Manager </h1> 
    <hr /> 
    <div class="page"> 

    </div> 
</div> 

<script type="text/template" id="user-list-template"> 
    <h1> Testing Template</h1> 
</script> 

и тело также включает в себя все другие сценарии. Я уверен, что делаю ошибку, но не могу ее найти. Пожалуйста, помогите, спасибо !!!

+0

Какой URL вы получаете 404 на? Что находится на сервере, который прослушивает этот URL? (Извините, не склонен смотреть видео-учебник.) – Amadan

+0

Я получаю 404 на http: // localhost: 8888/users - «GET http: // localhost: 8888/users 404 (Not Found)» Кроме того, i имеют основной index.html, и я пишу код в том же файле на данный момент. Зачем нам нужно прослушивание на стороне сервера, когда маршрутизатор js ros делает все для нас, нет? –

+0

Не совсем все. Если пользователь вводит новое местоположение в адресной строке, вы получите запрос на сервер. Если вы измените 'document.location', вы получите запрос на сервер. Только если вы используете «Backbone.history.navigate», вы получаете магистральную маршрутизацию. Вы не показывали, как вы попадаете на этот URL. – Amadan

ответ

1

Код для видео доступно здесь для сравнения:

index.html

Я вижу несколько синтаксических ошибок в размещенном коде, которые являются частью этой проблемы. Создается переменная «tempalte», но «template» передается в $ el.html(). Существует также; отсутствует после user.fetch ({})

Это должно быть так:

users.fetch({ 
    success: function(users) { 
    var template = _.template($('#user-list-template').html(), {users: users.models}); 
    this.$el.html(template); 
    } 
}); 
+0

Спасибо за указание на ошибку, но она все еще не работает. Я на самом деле не написал весь код ссылки index.html, поскольку я следую учебному курсу и делаю все пошагово. Поэтому на данный момент я просто создаю шаблон с тем же идентификатором, и он должен работать, но его все еще нет. Я также попытался скопировать ваш фиксированный код, но не смог. Вы видите, что что-то происходит не так? –

0

Похоже, ваш получать 404 при попытке извлечь список пользователей. Вы должны изменить свою коллекцию, чтобы включить полный URL службы:

var Users = Backbone.Collection.extend({ 
    url: 'http://backbonejs-beginner.herokuapp.com/users' 
}); 

Другим решением было бы использовать ajaxPrefilter:

$.ajaxPrefilter(function(options, originalOptions, jqXHR) { 
    options.url = 'http://backbonejs-beginner.herokuapp.com' + options.url; 
});