RactiveJS和jQuery插件

前端之家收集整理的这篇文章主要介绍了RactiveJS和jQuery插件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个表单有多个字段,其中一些表示纯文本,其中一些需要插件才能进行高级选择和上传功能.

这有两个问题:

> ractive需要解析模板并渲染它,然后我可以附加插件,以便有一些小的延迟
>第二个是这样的插件改变了所提及的字段周围的标记,并且不能与ractive生成的DOM树一起使用,因为该标记已经不在
同步.

解决这个问题的正确方法是什么?我真的很想使用ractive绑定所有的表单值并控制它的行为,但在这一点上似乎几乎不可能.

解决方法

将jQuery插件与Ractive整合的好方法是使用 decorators.一个装饰器是当元素进入DOM时被调用函数;它返回一个具有teardown()方法的对象,该方法在从DOM中删除时被调用.

所以如果你使用jQuery File Upload插件,你的装饰器可能看起来像这样:

  1. var fileupload = function (node) {
  2. $(node).fileupload();
  3.  
  4. return {
  5. teardown: function () {
  6. $(node).fileupload('destroy');
  7. }
  8. };
  9. };

创建装饰器后,您需要注册.最简单的方法是使其在全球范围内可用…

  1. Ractive.decorators.fileupload = fileupload;

…但是您也可以传入每个实例或每个组件的装饰器:

  1. // instance will have the fileupload decorator
  2. ractive = new Ractive({
  3. // ...usual options...
  4. decorators: { fileupload: fileupload }
  5. });
  6.  
  7. // all instances of Widget will have the decorator
  8. Widget = Ractive.extend({
  9. decorators: { fileupload: fileupload }
  10. });

然后,你可以在你的模板中使用它:

  1. <input decorator="fileupload" type="file" data-url="whatever">

这样就可以使用这个插件来指定具有数据属性的选项.但是,如果您需要通过装饰器本身指定选项,则可以这样做:

  1. <input decorator="fileupload:{{url}},{multiple:true}" type="file">

在本示例中,装饰器函数将接收两个附加参数 – 一个URL和一个选项对象:

  1. Ractive.decorators.fileupload = function (node,url,options) {
  2. // setup code...
  3.  
  4. return {
  5. update: function (url,options) {
  6. // if the options change (i.e. `url` updates),// this function is called
  7. },teardown: function () {
  8. // teardown code...
  9. }
  10. };
  11. };

猜你在找的jQuery相关文章