2012-07-17 3 views
0

Я использую магистраль в первый раз, и я действительно пытаюсь заставить ее работать правильно с файлом данных JSON.модель базовой модели JSON-элемент по ID

У меня есть модель, как так:

window.Test = Backbone.Model.extend({ 

defaults: { 
    id: null, 
    name: null, 
}, 

url: function() { 
    return 'json/test.json/this.id'; 
    }, 

initialize: function(){ 

} 
}); 

Если тестовый элемент щелкнул, то я стараюсь довести до сведения о тихоокеанской модели, которая была нажата, делая

testDetails: function (id) { 


    var test = new Test(); 
    test.id = id; 
    test.fetch({ success: function(data) { alert(JSON.stringify(data))}}); 
}, 

Однако это не работает, я не могу правильно сказать «получить элемент JSON с переданным идентификатором»

Может кто-нибудь, пожалуйста, покажите мне, как правильно структурировать URL-адрес модели, чтобы вытащить элемент с помощью ID.

Спасибо

ответ

0

ваш адрес неверен. вы возвращаете буквенную строку 'this.id'. Вы, вероятно, хотите сделать что-то больше вдоль линий

url: function() { 
    return 'json/test.json/' + this.id; 
} 
+0

В Backbone вы используете метод '.get()' для доступа к свойствам модели. 'this.id' вернет' undefined' – jackwanders

+0

Привет, я изменил его сейчас, но я получаю ошибку GET http: //localhost/backbone/json/test.json/2 404 (не найдено) –

+0

Как бы я сказал он должен получить элемент JSON с указанным ID –

0

Я хотел бы начать с установления вашей url функции:

url: function() { 
    return 'json/test.json/' + this.get('id'); 
} 

, как вы есть сейчас, каждый выборки запроса, независимо от модели id , будет /json/test.json/test.id

+0

Привет, я изменил его сейчас, однако я получаю сообщение об ошибке GET localhost/backbone/json/test.json/2 404 (Not Found) –

+0

В этом случае, скорее всего, проблема с маршрутизацией на вашем сервере или ваш ' url' по-прежнему неверен. Я не могу больше помочь, не зная больше о том, как настроен ваш бэкэнд – jackwanders

1

Проблема заключается в том, что вы обрабатываете свой файл данных JSON, как вызов сервера. Это не сработает, и именно по этой причине вы получаете 404. Если вы хотите получить доступ к файлу локально, сначала нужно загрузить файл. Вы можете сделать это с помощью jQuery, используя метод .getJSON(), или если статический файл, просто загрузите его в память с помощью блока сценариев (хотя вам, вероятно, потребуется назначить var в файле). Скорее всего, вы будете использовать jQuery. Пример этого можно найти здесь:

Using Jquery to get JSON objects from local file.

Если это массив JSON, вы можете загрузить массив в коллекцию и использовать метод «at» для доступа к определенному элементу по id. Если это полностью JSON, вам придется создать собственный парсер.

Смежные вопросы