1

我想知道 Ractive 生成​​的 DOM 元素何时准备就绪。就我而言,我想使用 jquery 将自动完成功能附加到元素上。理想情况下,它会是这样的:

模板:

{{#list}}
<input type="text" proxy-load="attach-typeahead">
{{/list}}

Javascript:

ractive.on("attach-typeahead", function(event){
    $(event.node).typeahead(...);
})

但是,即使我记得在文档中的某处提到了代理负载,该事件也不会触发。做我想做的事情的正确方法是什么?谢谢。

4

3 回答 3

2

Codler 的回答很到位 - 转换可用于将行为附加到节点(并使用 将其分离outro)。

在最新的 (0.3.8) 版本中,还有另一种方法,它的行为类似,但为此目的稍微简化了一点:decorators

文档还没有写出来(我的错),但是你可以在这里看到一个 typeahead 装饰器。装饰器只是一个函数,只要将节点添加到 DOM 就会被调用,它会返回一个对象,该对象带有一个teardown()方法,一旦从 DOM 中删除节点就会被调用。

您可以像这样使装饰器全局可用:

Ractive.decorators.foo = function ( node ) {
  // do some setup work with the node here...

  return {
    teardown: function () {
      // do any necessary cleanup here
    }
  };
};

或者您可以指定每个实例的装饰器,就像在小提琴中一样。

这里的另一个装饰器示例,这次是一个可排序的列表。

于 2013-12-20T21:16:22.590 回答
1

您可以使用该intro属性。这是 ractive 的过渡。创建 DOM 时,将调用 intro。你可以在这里找到更多信息https://github.com/RactiveJS/Ractive/wiki/Transitions

于 2013-12-20T16:27:26.097 回答
1

ractive 的文档中提到了代理事件。您的示例不起作用,因为输入元素没有本机加载事件。

所有 ractive 函数都有一个完整的函数回调,该回调会在渲染完成时触发。也许你可以使用它。

于 2013-12-20T11:21:40.703 回答