Ale.js

代理

开始

在 1.0.0 中,我们废除了 debug 参数,增加了一个功能类似的 proxy 参数,只不过使用方式略有不同:

1
2
3
4
5
proxy: {
setter: function(obj){
console.log(obj);
}
}

proxy参数支持 settergetter 函数,用来分别代理数据的设置和获取。你可以在组件定义时添加 proxy,也可以在渲染时动态添加。

setter

setter 参数需要为一个函数,同时需要接收一个参数:

1
2
3
setter: function(obj){
/* ... */
}

其中 obj 参数内部有以下几个键值:

  • type【数据的类型。normal代表普通数据,static代表静态数据】
  • key【数据的名称】
  • val【新设置的值】
  • preventUpdating【函数,调用即阻止组件的视图更新,但是不阻止组件数据值的更新】

同时,你需要使用 return 关键字返回设置的新值,否则组件数据值将被更新为 undefined

1
2
3
4
5
6
7
setter: function(obj){
return obj.val;

/* 或者你也可以返回你自行设置的值
return "就不让你更新数据!";
*/
}

当然,你也可以使用 preventUpdating 函数来阻止组件的视图更新,但是不能阻止组件数据值的更新(通过return可以阻止):

1
2
3
4
setter: function(obj){
obj.preventUpdating();
return obj.val;
}

getter

同样的,getter 参数需要为一个函数,同时也需要接收一个参数。

1
2
3
getter: function(obj){
/* ... */
}

其中 obj 参数内部也有以下几个键值:

  • type【数据的类型。normal代表普通数据,static代表静态数据】
  • key【数据的名称】
  • val【获取的值】
  • preventUpdating【函数,调用即阻止组件的视图更新,但是不阻止组件数据值的更新】【无效!因为getter不会造成视图更新!】

找到了一些错误?在Github上编辑!