2013-04-06 65 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