Как сделать ajax звонок из RiotControl Store?

Я создал API с Nodejs/Express. Допустим, я могу сделать запрос GET localhost:8080/list и он возвращает JSON из моего списка TODO, и я могу POST localhost:8080/list создать новый список дел.

Затем я использую Riotjs + Riotcontrol для своего веб-сайта Frontend. Как запросить файл todostore.js?

Это файл riotcontrol todostore.js, который я получаю из демонстрационной папки riotcontrol

Riotcontrol

// TodoStore definition.
// Flux stores house application logic and state that relate to a specific domain.
// In this case, a list of todo items.
function TodoStore() {
  riot.observable(this) // Riot provides our event emitter.

  var self = this

  self.todos = [
    { title: 'Task 1', done: false },
    { title: 'Task 2', done: false }
  ]

  // Our store's event handlers / API.
  // This is where we would use AJAX calls to interface with the server.
  // Any number of views can emit actions/events without knowing the specifics of the back-end.
  // This store can easily be swapped for another, while the view components remain untouched.

  self.on('todo_add', function(newTodo) {
    self.todos.push(newTodo)
    self.trigger('todos_changed', self.todos)
  })

  self.on('todo_remove', function() {
    self.todos.pop()
    self.trigger('todos_changed', self.todos)
  })

  self.on('todo_init', function() {
    self.trigger('todos_changed', self.todos)
  })

  // The store emits change events to any listening views, so that they may react and redraw themselves.

}

1 ответ

Вы могли бы сделать что-то подобное в вашем TodoStore

self.on('todo_init', function() {                                
  // Trigger loading here perhaps, then set loading = false when it's loaded
  //self.trigger('set_loading', {value: true})                  
  fetch('http://localhost:8080/list')                        
              .then(response => response.json())                            
              .then(function (json) {                                       
                  self.todos = json                    
                  self.trigger('todos_changed', self.todos) 
              })                                                            
}) 
Другие вопросы по тегам