2016-08-16 7 views
1

CycleJS HTTPドライバを使用してRESTエンドポイントにリクエストをしようとしていますが、入力フィールドの値を取得する方法は異なります反応性が、私は(正しい道)それをする方法を見つけることができないよCycleJSのHTTPリクエストのデータの一部として入力フィールド値を使用

ユーザーの場合:

ユーザー名とパスワードフィールドを埋め、その後、彼は、「登録」をクリック、要求は入力フィールドをデータとして処理されます。

フィールドのxs-streamを作成した場合、値は決して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; 
    } 
}); 

私は間違いなく何かが欠けているが、そのための解決策を見つけることができませんよ。

+1

あなたがここにいない[* XStreamのの*](https://github.com/staltz/xstream#faq)を使用していますRxJS? – bloodyKnuckles

答えて

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; 
    }); 
+0

ありがとう、最初のオプションはうまくいきました。2番目のオプションを使用しようとしましたが、ストリームライブラリに** withLatestForm **操作がないために機能しませんでした。ストリームドキュメントに示されたソリューションを実装しようとしましたが、うまくいかなかった。 ありがとう – ismapro

+0

コメントありがとうございます。私はタイプし、 "withLatestFrom"の代わりに "withLatestForm"と書いたことに気付かなかった。それについて申し訳ありません! –

+0

これをCycleJSのやり方で行いたいが、それでも** withLatestFrom **が見つからない場合は、@ sampleCombine **をhttps://github.com/staltz/xstream#faqからチェックアウトして@血まみれのクヌクル – xiankai

関連する問題