2016-09-26 1 views
0

Так что я пытаюсь изучить EmberJS, и я очень сильно борюсь с этим. В принципе, у меня есть следующие базовая структураКак извлечь данные из внешнего API с помощью EmberJS?

Шаблон:

<ul> 
    {{#each model as |game|}} 
    <li>{{game.title}} - {{game.console}}</li> 
    {{/each}} 
</ul> 

маршрута Файл:

export default Ember.Route.extend({ 
    model() { 
     return [ 
     {'title':'Super Mario Bros', 'console':'NES'}, 
     {'title':'Pac Man', 'console':'Arcade'}, 
     {'title':'Galaga', 'console':'Arcade'}, 
     {'title':'Frogger', 'console':'Arcade'}, 
     {'title':'Marvel vs. Capcom', 'console':'Arcade'}, 
     {'title':'The Legend of Zelda', 'console':'NES'}, 
     {'title':'CastleVania', 'console':'NES'}, 
     {'title':'Final Fantasy IV', 'console':'SNES'}]; 
    } 
}); 

Но вместо того, чтобы просто жестко прописывать его, как я здесь, я хочу, чтобы тянуть это из ссылки API Apiary, используя GET-вызов. Как мне это сделать?

(Пасека https://private-9c66cc-managementconsole.apiary-mock.com/getactiveroms)

ответ

0

Для совместимого API JSON, вы можете сделать что-то вроде этого:

export default Ember.Route.extend({ 
    model() { 
    let url = 'https://private-9c66cc-managementconsole.apiary-mock.com/getactiveroms'; 
    return Ember.$.getJSON(url); 
    }, 
}); 

Однако, поскольку этот API не реагирует с действительным JSON, вы будете, чтобы принести API как текст и манипулировать ответом перед его анализом как JSON.

export default Ember.Route.extend({ 
    model() { 
    let url = 'https://private-9c66cc-managementconsole.apiary-mock.com/getactiveroms'; 
    return Ember.$.ajax({ 
     url: url, 
     dataType: 'text', 
    }) 
    .then((result) => { 
     result = result.replace(/[ \n]+/g, ''); 
     result = result.substring(1, result.length - 1); 
     result = result.replace(/'/g, '"'); 
     return JSON.parse(result); 
    }, (err) => { 
     console.log('err', err); 
    }); 
    }, 
}); 

Предлагаю обновить ответ API, чтобы он содержал действительный JSON, чтобы облегчить вашу жизнь при его использовании.