2014-06-09 7 views
0

Я изучаю Дарт, и я пытаюсь отобразить форму, которая отправляет пользовательские данные на другую страницу. Я использую пакет «route». Вот мой код в «бункере»:Рендеринг страниц с использованием Dart

import 'urls.dart'; 
import 'package:route/server.dart'; 
import 'package:route/pattern.dart'; 
import 'dart:io'; 

main() { 
    HttpServer.bind('127.0.0.1', 8000).then((server) { 
    var router = new Router(server) 
     ..serve(homeUrl).listen(serverHome) 
     ..serve(validateUrl, method: 'POST').listen(serverValidate) 
     ..defaultStream.listen(serverNotFound); 
    }); 
} 

serverHome(req) { 
    print("Server side"); 
} 

serverValidate(req) { 

} 

serverNotFound(req) { 

} 

И вот что у меня есть в «Сети»:

library client; 
import 'dart:html'; 
import 'package:route/client.dart'; 
import 'urls.dart'; 
void main() { 
    /* 
    querySelector("#sample_text_id") 
     ..text = "Click me!" 
     ..onClick.listen(reverseText); 
     */ 
/* var router = new Router() 
    ..addHandler(homeUrl, showForm) 
    ..addHandler(validateUrl, validateForm) 
    ..listen(); 
    */ 
} 

void showForm(String path) { 
    print("Showing form"); 
    querySelector("#sample_text_id") 
     ..text = "Click me!" 
     ..onClick.listen(reverseText); 
} 

void validateForm(String path) { 
    print("Validate"); 
} 
void reverseText(MouseEvent event) { 
    var text = querySelector("#sample_text_id").text; 
    var buffer = new StringBuffer(); 
    for (int i = text.length - 1; i >= 0; i--) { 
    buffer.write(text[i]); 
    } 
    querySelector("#sample_text_id").text = buffer.toString(); 
} 

Как отобразить свою форму (experiment3.html) и проверки page (validate.html), а также получить доступ к форме ввода на странице проверки?

ответ

0

Вы можете добавить HTML на страницу, как

String myForm = new DocumentFragment.html(''' 
    <form id='myForm'> 
    <input type='text' .... 
    .... 
    <input type='submit'> 
    <form/>''') 

querySelector('#form_parent') 
    ..children.clear() 
    ..add(myForm); 

querySelector('#myForm').onSubmit.listen((e) { 
    // handle form input (validation) 
    // send data 
}); 

Я не использовал маршрутизатор еще и не может помочь вам там. Вы можете позже просто добавить другое представление таким же образом, потому что children.clear() удаляет всех детей до добавления нового HTML.

+0

Я не хочу изменять свой HTML. Я хочу сделать HTML FILE, например, "validate.html". –

+0

Я знаю, что могу создать «validate.dart» с функцией main(), но тогда нет возможности динамически передавать данные между страницами. –

+0

Нет большой разницы, если вы используете строку или загружаете файл. Когда вы делаете HttpRequest для загрузки 'validate.html' с сервера, вы получаете строку, которую вы можете добавить к вам, как показано выше. Я не знаю, что вы подразумеваете под «тогда нет возможности динамически передавать данные между страницами». –

Смежные вопросы