1

我正在尝试使用 CycleJS HTTP 驱动程序向 REST 端点发出请求,但我获取输入字段值的方式不是反应式的,但我无法找到一种方法来做到这一点(正确的路)

用户案例:

用户填写用户名和密码字段,然后单击“注册”,请求以输入字段作为数据完成。

但是,如果我创建字段的 xs 流,则永远不会为 HTTP 请求设置该值。

所以我最终做的是:

.select('.btn-signup').events('click')
.map( ev => { 

  let request = API.requestCreate;

  // TODO - search for the best way to use the values.
  var user = document.querySelector('.user-input').value;
  var pass = document.querySelector('.user-password').value;

  if(user && pass ) {
    request.send = { username:user, password: pass };  
    return request;
  }
});

我肯定错过了一些东西,但无法找到解决方案。

4

1 回答 1

3

似乎对我有效

.select('.btn-signup').events('click')
.map( ev => ({ 
  username: document.querySelector('.user-input').value,
  password: document.querySelector('.user-password').value
})
.filter(data => data.username && data.password)
.map(data => {
  const request = API.requestCreate;

  request.send = data;

  return request;
});

或者:

const username$ = .select('.btn-signup')
  .events('.user-input')
  .map(e => e.target.value);

const password$ = .select('.btn-signup')
  .events('.user-input')
  .map(e => e.target.value)

.select('.btn-signup')
  .events('click')
  .withLatestFrom(
    username$,
    password$,
    (username, password) => ({username, password})
  )
  .filter(data => data.username && data.password)
  .map(data => {
    const request = API.requestCreate;

    request.send = data;

    return request;
  });
于 2016-08-16T12:18:37.113 回答