2012-12-01 52 views
6

我想將我的用戶註冊表單中的用戶信息傳遞給Web組件。這可能嗎。像下面這樣:使用Web組件的Dart服務器

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(aka XMLHttpRequest aka HttpRequest)請求並獲取JSON數據。因爲Web組件需要被編譯成香草JavaScript和HTML(直到功能在瀏覽器中出現...即將推出!),您不能發回包含您的自定義元素的原始HTML(就像您在您的例)。

基本上,在您的服務器上創建一個處理程序,在數據庫中創建用戶併發送包含用戶詳細信息的JSON響應。您的網頁(或組件)將收到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(); 

這裏假設你添加了一個String toJson();方法User類。

+0

感謝塞思,在客戶端上使用user.toJson()的任何指針? – basheps

+0

嗨@basheps幸運地在客戶端上使用JSON很容易,因爲Web瀏覽器會說JSON。在Dart中,只需使用dart:json庫。或者,從Chris Buckett閱讀本文:http://www.dartlang.org/articles/json-web-service/ –