Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Elixir Temple模板中插入未缩放的文本?_Elixir_Temple - Fatal编程技术网

如何在Elixir Temple模板中插入未缩放的文本?

如何在Elixir Temple模板中插入未缩放的文本?,elixir,temple,Elixir,Temple,我正在试用长生不老药库,在转义值方面遇到了一些问题 基本上,我有一些文本,我不想被转义,只是在它的原始状态添加 例如,在我的控制器中: conn |> assign(:scripts_js, "alert('ok')") 然后在模板中,我执行以下操作: script do text @scripts_js end 然而,其结果是: 警报(';正常';) 我还尝试了部分: script do partial @scripts_js end 但结果也没有发生 我

我正在试用长生不老药库,在转义值方面遇到了一些问题

基本上,我有一些文本,我不想被转义,只是在它的原始状态添加

例如,在我的控制器中:

conn
  |> assign(:scripts_js, "alert('ok')")
然后在模板中,我执行以下操作:

script do
  text @scripts_js
end
然而,其结果是:

警报(';正常';)
我还尝试了
部分

script do
  partial @scripts_js
end
但结果也没有发生

我如何在Temple的模板中插入未缩放的文本?我应该为此使用自定义组件还是库以某种方式支持它


注意:这里javascript只是一个示例。我不是在寻找如何在页面中插入JS的答案(带有src attr的脚本标记就可以了)。我需要知道的是要插入一个未经转换的字符串,它可能是JS、CSS、HTML或其他任何内容。

您可以将JS放入文件中,然后在模板中使用:

script type: "text/javascript", src: @js_path
在控制器中的操作中,您将写入:

  def my(conn, _params) do
    render(conn, 
      "my.html",   #template
      js_path: Routes.static_path(conn, "/js/my.js")  #path to js file
    )
  end
import "./my.js" 
js/app.js
的底部,您会写:

  def my(conn, _params) do
    render(conn, 
      "my.html",   #template
      js_path: Routes.static_path(conn, "/js/my.js")  #path to js file
    )
  end
import "./my.js" 
然后创建包含以下内容的文件
js/my.js

alert("ok");

您遇到的问题是因为Temple的
text()
function/macro在字符串上调用了
Phoenix.HTML.HTML\u escape()
。不幸的是,
text()
返回的是
:好的
,而不是实际的文本,否则您可以通过类似于
hmtEntities.decode()
的管道将
text()
的返回值返回原始字符串。

您可以将js放在一个文件中,然后在模板中使用:

script type: "text/javascript", src: @js_path
在控制器中的操作中,您将写入:

  def my(conn, _params) do
    render(conn, 
      "my.html",   #template
      js_path: Routes.static_path(conn, "/js/my.js")  #path to js file
    )
  end
import "./my.js" 
js/app.js
的底部,您会写:

  def my(conn, _params) do
    render(conn, 
      "my.html",   #template
      js_path: Routes.static_path(conn, "/js/my.js")  #path to js file
    )
  end
import "./my.js" 
然后创建包含以下内容的文件
js/my.js

alert("ok");

您遇到的问题是因为Temple的
text()
function/macro在字符串上调用了
Phoenix.HTML.HTML\u escape()
。不幸的是,
text()
返回
:好的
,而不是实际的文本,否则你可以通过
hmtEntities.decode()
之类的管道将
text()
的返回值返回原始字符串。

我直接在中问了这个问题,从@mhanberg那里得到了答案。 因此,基本上,要在模板中放置未缩放的文本,我们应该使用以下内容:

partial Phoenix.HTML.raw("<div>Unescaped content!</div>")
# alternative approach, since all Phoenix.HTML.raw does is mark it as :safe
partial {:safe, "<div>Unescaped content!</div>"}

我直接问了这个问题,从@mhanberg那里得到了答案。 因此,基本上,要在模板中放置未缩放的文本,我们应该使用以下内容:

partial Phoenix.HTML.raw("<div>Unescaped content!</div>")
# alternative approach, since all Phoenix.HTML.raw does is mark it as :safe
partial {:safe, "<div>Unescaped content!</div>"}

不幸的是,这并不能回答这个问题。这里您只是展示了如何将js文件导入到模板中,这一点非常明显。我需要知道的是,如何在Temple的模板中插入一个未加修饰的文本。这里javascript只是一个例子。我也很清楚为什么Temple的text()函数会进行转义,在发布问题之前我已经阅读了它的代码。我已经阅读了它的代码——那么答案应该很明显。我已经阅读了“text”和“partial”函数的代码,并简要浏览了其余的源代码,但仍然找不到任何内容。但也许我遗漏了一些东西,因为模板库只允许转义变量,这很奇怪。这就是我问的原因。不幸的是,这并不能回答这个问题。这里您只是展示了如何将js文件导入到模板中,这一点非常明显。我需要知道的是,如何在Temple的模板中插入一个未加修饰的文本。这里javascript只是一个例子。我也很清楚为什么Temple的text()函数会进行转义,在发布问题之前我已经阅读了它的代码。我已经阅读了它的代码——那么答案应该很明显。我已经阅读了“text”和“partial”函数的代码,并简要浏览了其余的源代码,但仍然找不到任何内容。但也许我遗漏了一些东西,因为模板库只允许转义变量,这很奇怪。这就是我问的原因。