我正在使用EEx.eval_file,EEx.eval_string因为我在编译期间无法访问模板,并希望公开一些可以从模板内部调用的函数.
我可以这样使用bindings(test: &test/1)传递引用但是我必须像这样调用它们从用户的角度来看并不是很好:<%= test.("Hello") %>
还有其他方法可以尝试吗?
它没有记录AFAICS,而是EEx.eval_string内部调用Code.eval_quoted/3,第三个参数(options)按原样传递给该函数.Code.eval_quoted/3接受一个functions关键字参数,options其中包含要导入的函数:
:functions- 元组列表,其中第一个元素是模块,第二个元素是导入的函数名称和arity列表; 必须对函数名称和arity列表进行排序
例:
iex(1)> EEx.eval_string ~s|<%= length("foo") %>|, [], functions: [{String, [length: 1]}]
"3"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
366 次 |
| 最近记录: |