2015-11-20 3 views
1

Я пытаюсь получить прогрессивный рендеринг для работы в Марко и Коайсе.Marko and Koajs: Почему мой рендеринг асинхронного фрагмента не работает?

Во-первых, я использую модуль запроса-обещания, чтобы дать обещание для передачи данных JSON.

rp = require('request-promise') 

function getDataFeed() { 

    var url = "http://api.dronestre.am/data"; 
    var options = { 
     url: url, 
     headers: { 'User-Agent': 'request' }, 
    }; 

    rp(options).then(function(result) { 

     var info = JSON.parse(result); 
     return info.strike; 
    }); 
}; 

Затем я использую КОА маршрутизатор и Marko загрузить шаблон, где подача идет в качестве данных

// router method to serve first visualization 
router.get('/first', function *() { 

    let data = { 
     strikes : getDataFeed() 
    }; 

    this.body = marko.load('./views/first.marko').stream(data); 
    this.type = "text/html"; 
}) 

И, наконец, в моем шаблоне, я использую асинхронный-фрагмент, чтобы указать, что раздел страницы должны быть загружены асинхронно:

<async-fragment data-provider='data.strikes' var='strikes' client-reorder='true'> 
    <async-fragment-placeholder> 
     <p>Loading...</p> 
    </async-fragment-placeholder> 
    <for each="strike in strikes"> 
     <tr> 
      <td>${strike.number}</td> 
      <td>${strike.country}</td> 
      <td>${strike.date}</td> 
      <td>${strike.narrative}</td> 
      <td>${strike.town}</td> 
      <td>${strike.deaths}</td> 
      <td>${strike.target}</td> 
      <td>${strike.lat}</td> 
      <td>${strike.lon}</td> 
     </tr> 
    </for> 
</async-fragment> 

к сожалению, ничего не загружает в асинхронном-фрагмент блока. Даже не местозаполнитель.

Как получить образец заполнителя, а затем данные занять свое место в моем шаблоне?

ответ

1

Проблема решена! Мне нужно вернуть функцию посыла в getDataFeed()

Решение:

rp = require('request-promise') 

function getDataFeed() { 

    var url = "http://api.dronestre.am/data"; 
    var options = { 
     url: url, 
     headers: { 'User-Agent': 'request' }, 
    }; 

    return rp(options).then(function(result) { 

     var info = JSON.parse(result); 
     return info.strike; 
    }); 
}; 
+0

Рад, что ты понял это! Не стесняйтесь присоединяться к нам на Gitter: gitter.im/marko-js/marko –