2014-07-12 13 views
8

In un controller:Come usare ic-ajax con jsonp?

/*globals Ember*/ 

import { raw as icAjaxRaw } from 'ic-ajax'; 
... 
    myData: function() { 
     var promise = new Ember.RSVP.Promise(function (resolve, reject) { 
      var req = icAjaxRaw({ 
       type: 'GET', 
       url: server+'/api/mydata?callback=?', 
       dataType: 'jsonp', //problematic 
      }); 
      req.then(
       function(result) { 
        console.log('myData', result.response); 
        resolve(result.response); 
       }, 
       function(response) {    
        console.error('myData', response.jqXHR.responseText, response); 
        reject(response); 
       } 
      ); 
     }); 
     return promise; 
    }.property(), 

... e nel modello con tale controller:

{{myData}} 

Questo visualizza:

{ 
    "_id": 101, 
    "_subscribers": [] 
    } 

che si presenta come un oggetto intermedio, non quello la promessa si risolve a Ho la sensazione che questo potrebbe essere correlato a qualcosa che ha a che fare con il ciclo di corsa ember, come mentioned here

Come ottenere il modello per visualizzare ciò che viene visualizzato nel registro della console?

+0

Finché non ci sarà un corpo più consistente di domande circa la libreria 'ic-ajax', si prega di non creare un tag per questo. L'ho rimosso dal tuo post per un motivo. –

+2

@MartijnPieters è l'unico tag più importante per questa domanda anche se – bguiz

+0

No, non proprio. Nessun esperto seguirà quel tag, non ancora; nessuno troverà * il tuo post seguendo un tag con solo una o due domande ad esso associate. –

risposta

0

Non è possibile restituire una promessa da una proprietà calcolata.

Le proprietà calcolate non risolvono le promesse, il che significa che "myData" è una promessa, non il valore in cui la promessa si risolve. Probabilmente dovresti spostarlo nei ganci del modello della Rotta. Se questo non è un'opzione che si può fare qualcosa di simile:

myData: {}, 

getMyData: function() { 
    var self = this; 
    var req = ic.ajax.raw({ 
    type: 'GET', 
    url: 'http://ip.jsontest.com/?callback=?', 
    dataType: 'jsonp' 
    }); 
    req.then(
    function(result) { 
     console.log('myData', result.response); 
     self.set('myData', result.response); 
    }, 
    function(response) { 
     console.error('myData', response.jqXHR.responseText, response); 
    } 
); 
}.on('init') 

Scegli questa JSBin