2012-12-01 4 views
6

ユーザー登録フォームからWebコンポーネントにユーザー情報を渡したいと思います。これは可能ですか?次のようなもの:Webコンポーネントを使用したダーツサーバー

app.addRequestHandler(
    (req) => req.method == 'POST' && req.path == '/newUser', 
    (req, res) { 
    ... 
    input.onClosed =() { 
     ... 
     var user = new User(); 
     user.name = params["user[first_name]"]; 
     user.email = params["user[email]"]; 
     res.outputStream.writeString('<x-MyWebComponent data-value="User: user"></x-MyWebComponent>'); 
     res.outputStream.close(); 
    }; 
    ... 
    } 
); 

答えて

5

ありがとうございます!

ウェブコンポーネントにデータを送信することは、ウェブページにデータを送信することと変わりありません。つまり、Webページまたはコンポーネントは、AJAX(別名XMLHttpRequest、別名HttpRequest)リクエストをサーバーに送信し、JSONデータを戻すことができます。

ウェブコンポーネントをバニラJavaScriptとHTMLにコンパイルする必要があるため(ブラウザに機能が搭載されるまで...間もなく!)、カスタム要素を含む未処理のHTMLを返すことはできません。例)。

基本的には、サーバーにユーザーを作成し、ユーザーの詳細を含むJSON応答を送信するハンドラーを作成します。あなたのWebページ(またはコンポーネント)はJSONレスポンスを受け取り、それをコンポーネント経由でページにバインドすることができます。

ここには多くの可動部品がありますので、エンドツーエンドのサンプルが必要です。一方で、あなたはこのような何か行うことができます:

var user = new User(); 
user.name = params["user[first_name]"]; 
user.email = params["user[email]"]; 
res.headers.add('Content-Type', 'application/json'); 
res.outputStream.writeString(user.toJson()); 
res.outputStream.close(); 

をこれは、UserクラスにString toJson();メソッドを追加前提としています。

+0

ありがとうセス、クライアント上の消費user.toJson()上の任意のポインタ? – basheps

+0

ウェブブラウザがJSONを話すので、幸いにも@bashepsはクライアントでJSONを消費しています。ダーツでは、単にdart:jsonライブラリを使用してください。または、Chris Buckettからこの記事を読んでください:http://www.dartlang.org/articles/json-web-service/ –

関連する問題