2013-04-06 50 views
2

我不能得到利用無線電投入工作數據綁定下面的代碼:使用單選按鈕和Web UI數據綁定

<!DOCTYPE html> 

<html> 
    <body> 
    <div> 
     <input type="radio" name='veggies' value="kale" bind-value={{name}}>Kale<br> 
     <input type="radio" name='veggies' value="spinach" bind-value={{name}}>Spinach<br> 
     <input type="radio" name='veggies' value="carrots" bind-value={{name}}>Carrots 
    </div> 

    <p>name = {{name}}</p> 

    <script type="application/dart"> 

     import 'package:web_ui/web_ui.dart'; 

     @observable 
     String name = "Carrots"; 

     void main() {} 

    </script> 
    </body> 
</html> 

該文件是radio_binding.html。

當我建立這個文件,我在出/ radio_binding.html.dart文件得到一個錯誤:

Error: line 42 pos 46: semicolon expected 
    __t.listen(__e0.onChange, ($event) { {{name}} = 'kale'; }); 

這是一個錯誤還是我做錯了什麼?

+0

我不是一個飛鏢用戶,但不你的'bind-value'屬性需要用引號括起來?即它應該是'bind-value =「{{name}}」'? – Dai 2013-04-06 20:38:39

+0

戴上來吧!我很樂意從一些有點魔法的東西中學習/合作,因爲SIMD for Dart推出了更多功能:) – Perry 2013-04-06 20:53:09

回答

4

嘗試使用此綁定:

<div> 
    <input type="radio" name='veggies' value="Kale" bind-value="name">Kale<br> 
    <input type="radio" name='veggies' value="Spinach" bind-value="name">Spinach<br> 
    <input type="radio" name='veggies' value="Carrots" bind-value="name">Carrots 
</div> 

而且我不認爲你需要的@observable,我只是用:

String name = 'Spinach'; 
+0

注意,值是區分大小寫的,所以「胡蘿蔔」不會匹配「胡蘿蔔」 – Perry 2013-04-06 20:41:13

+1

當然,改變綁定值到「」後的{{}}修復了問題。非常感謝。另外,是的,這可以在沒有@observable的情況下運行,但Web UI正在擺脫與觀察者數據綁定的舊方式,並轉向使用\ @observable。所以,如果我沒有弄錯,這是現在數據綁定的首選方式。不幸的是,它的記錄並不完美。 – 2013-04-06 21:59:58