RactiveJS-09 Two-way binding

简单的双向绑定

Ractive的输入输出的双向绑定的使用方法和常规的html标签有不同之处,对于不同类型的input来说:

  • text:数据绑定到value上
  • radio,checkbox:value数据绑定到各自input的name上(checked绑定的是布尔值)
  • select:各个option的value绑定到select的value上

文本输入框的双向绑定

实现数据的双向绑定很简单:

<div id="container"></div>
<script type="text/ractive" id="template">
    <label>
        输入你的名字: <input type='text' value={{value}}>
    </label>
    <p>Hello, {{value}}</p>
</script>
<script>
    var ractive = new Ractive({
        el : '#container',
        template : '#template'
    })
</script>

可以在Ractive的初始化选项中对双向绑定进行设置,

lazy: true // 数据只有在cahnge和blur时才会更新
twoway:false // 关闭双向绑定

observe

上面的这种绑定其实很少使用,因为通常情况下我们都希望对绑定的数据进行处理,所以需要用到ractive.observe()方法

ractive.observe( 'name', function ( newValue, oldValue ) {
    doSomethingWith( newValue );
});

radio和checkbox的双向绑定

对于radio和checkbox的绑定,可以将数据绑到name属性上,{{name}}和被选定的input的value有进行了绑定。

<script type="text/ractive" id="template">
    <label><input type='checkbox' name='{{value}}'  value='123' checked>123</label>
    <label><input type='checkbox' name='{{value}}'  value='456'>456</label>
            <p>this is {{value}}</p>
</script>

上面的checked是一个布尔属性,checked=’false’与checked效果是相同的,因为布尔属性只要出现就意味着true,如果要为false只能不出现在标签中。

在jQuery中,可以使用prop(‘checked’, false)取消input的选中

一个input里面只能出现一个自动与Ractive关联的变量(==我自己感觉,不知道正确与否==)

ractive.toggle()是在两个值之间循环更改变量的方法

select的双向绑定

将各个option的value绑定到了select的value上:

<script type="text/ractive" id="template">
    <select value='{{value}}'>
        <option value='111'>1</option>
        <option value='222'>2</option>
        <option value='3333'>3</option>
    </select>
    <p>this is {{value}} </p>
</script>

也可以用each循环实现这个结构:

<script type="text/ractive" id="template">
    <select value='{{jay}}'>
        {{#each jays}}<option>{{this}}</option>{{/each}}
    </select>
    <p>{{jay}}</p>
</script>
<script>
    var ractive = new Ractive({
        el : '#container',
        template : '#template',
        data:{
            jays : [111,222,333],
            jay : this[2]

        }
    });
</script>

上面的代码中:

  1. this指代的是当前的上下文环境,当在循环中使用this时,它指代的就是循环的各个对象,可以使用{{.}}代替{{this}}
  2. 还是需要注意,select最终选择的value绑定到了select的value上面,data中的jay是给定select的初始值

select的多重选择

在select标签中增加了multiple属性后,RactiveJS会将选择的选项组成一个数字,提供使用者使用

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值