LINUX.ORG.RU

Поясните по backbone'y!

 , , , ,


0

1

Всем привет!

Осваиваю библиотеку Backbone.js (только не надо советывать мне что-либо другое) и наткнулся на неочевидные для меня моменты. Есть ли среди лоровцес такие, кто сможет прояснить кое-что.

Есть код:


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


/*******************************************************************************
  COLECTIONS SECTION
*/
var Tasks = Backbone.Collection.extend({
    url: "/users"
});
/********************************************************************************/


/*******************************************************************************
  VIEW SECTION
*/
var TasksList = Backbone.View.extend({

    el: ".content",

    render: function() {
        var render_this = this;
        var tasks = new Tasks();
        tasks.fetch({
            success: function() {
                render_this.$el.html("<b>Item: </b>");
            }
        })
    }

});

var taskList = new TasksList();
/********************************************************************************/


/*******************************************************************************
  ROUTER SECTION
*/
var Router = Backbone.Router.extend({

    routes: {
        "": "index",
        "edit/:id": "edit",
        "delete/:id": "delete",
        "new/": "new",
    },

    index: function() {
        console.log("Hello, Index Page!");
        taskList.render();
    }

});

var router = new Router();
/*******************************************************************************/


Backbone.history.start();

// EOF

Вопрос 1: Как собственно связаны результат, полученный от функции ajaxPrefilter со всем остальным. Как в render() приходит этот результат?

Вопрос 2: Как вместо ajaxPrefilter использовать JQuery-функцию ajax()?


1.

tasks.fetch calls $.ajax

ajaxPrefilter modifies ajax request (adds url)

tasks receives $.ajax response

2.

backbone.Model уже использует $.ajax внутри, а ajaxPrefilter только модифицирует все $.ajax запроси

Stribog
()
Ответ на: комментарий от Stribog

Хорошо. А как тогда получить доступ к данным, полученным через ajaxPrefilter? Предположим, что сревер возвращает следующий json-кортеж: {mydata: «Hello, Backbone!!!»}.

djnoob
() автор топика
Ответ на: комментарий от djnoob

ajaxPrefilter только модифицирует запрос, он сам ничего не получает

данние запрашивает коллекция tasks

соответсвенно, чтоб получить доступ к данним, нужно использовать методи коллекции: http://backbonejs.org/#Collection

например, tasks.at(0)

Stribog
()

лоровцес

Записал в словарик «лоровцессы».

goingUp ★★★★★
()
Ответ на: комментарий от djnoob

Блин! at и get получают данные только по индексу, а по ключу получить никак нельзя?

Коллекция это список (массив), соответственно, никаких ключей там нету, если хочешь найти элемент массив с определенным ключем или значением - фильтруй! _.filter() или другая функция.

grouzen ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.