当前位置: > > > Rivets.js - 数据绑定和模板系统使用详解3(组件封装、默认配置的修改)

Rivets.js - 数据绑定和模板系统使用详解3(组件封装、默认配置的修改)

相关文章系列:
Rivets.js - 数据绑定和模板系统使用详解1(基本介绍、绑定器的使用)
Rivets.js - 数据绑定和模板系统使用详解2(格式化器的使用、函数调用)
[当前文章] Rivets.js - 数据绑定和模板系统使用详解3(组件封装、默认配置的修改)

七、组件封装

Rivets.js 允许我们可以自定义一些组件,从而实现视图的复用。

1,封装一个计数器组件

组件内有加减两个按钮,点击后会对绑定的数据进行 +1-1
按钮旁还有个文本标签,显示当前的数值。
//组件
rivets.components['counter'] = {
    //返回组件使用的模板
    template: function() {
        return '<button rv-on-click="increment">+</button>' +
                '<button rv-on-click="decrement">-</button>' +
                '<span> {data.nameAttr}:{data.countAttr}</span>';
    },
    //返回组件对应的视图模型
    initialize: function(el, attributes) {
        return new counterViewModel(attributes);
    }
};

//定义组件对应的视图模型
function counterViewModel(attributes) {
    //组件数据
    this.data = attributes;

    //加按钮调用的方法
    this.increment = function (context, ev) {
        // Rivets 会将 count-attr 重命名为 countAttr
        ev.data.countAttr++;
    };

    //减按钮调用的方法
    this.decrement = function (context, ev) {
        ev.data.countAttr--;
    };
}

2,计数器组件使用样例

(1)下面是样例代码
/********* 下面是js代码 ********/
//数据模型
var data = {
  name: "商品库存",
  value: 10
}

//绑定并显示模型
rivets.bind($("#detail"), {
  data: data
});


/********* 下面是html代码 ********/
<section id="detail">
  <counter count-attr="data.value" name-attr="data.name"/>
</section>

(2)运行效果图

八、修改默认配置

通过 rivets.configure,我们可以修改 Rivets 的相关配置,具体有如下配置项:
rivets.configure({

  // 模板中的属性前缀
  prefix: 'rv',

  // 预加载模板实现初始数据绑定
  preloadData: true,

  // sightglass根路径
  rootInterface: '.',

  // 用于文本绑定的模板分隔符
  templateDelimiters: ['{', '}'],

  // rv-each绑定的index索引
  iterationAlias : function(modelName) {
    return '%' + modelName + '%';
  },

  // on-*事件绑定响应函数的参数
  handler: function(target, event, binding) {
    this.call(target, event, binding.view.models)
  },

  // rivets自0.9起, 函数不会在表达式中自动执行。如果需要向后兼容,则将此参数设置为true
  executeFunctions: false

})
评论0