如何在 <button> Eliom 中复制



我正在尝试在 Eliom 中复制以下代码,但我无法找出复制 <button> 标签的最佳方法。Eliom 文档只会让我更加困惑。似乎使用string_button可能是最好的方法,但我不明白我为name论点提供了什么。

<!DOCTYPE html>
<html lang="en">
<head>
  <title>Bootstrap Example</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
  <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
  <h2>Button Styles</h2>
  <button type="button" class="btn btn-default">Default</button>
  <button type="button" class="btn btn-primary">Primary</button>
  <button type="button" class="btn btn-success">Success</button>
  <button type="button" class="btn btn-info">Info</button>
  <button type="button" class="btn btn-warning">Warning</button>
  <button type="button" class="btn btn-danger">Danger</button>
  <button type="button" class="btn btn-link">Link</button>      
</div>
</body>
</html>

string_button:

val string_button : 
  ?a:HTML5_types.button_attrib Eliom_pervasives.HTML5.M.attrib list ->
  name:[< string Eliom_parameters.setone ] Eliom_parameters.param_name ->
  value:string ->
  HTML5_types.button_content Eliom_pervasives.HTML5.M.elt list ->
  [> HTML5_types.button ] Eliom_pervasives.HTML5.M.elt

string_button文档:http://ocsigen.org/eliom/2.0/api/client/Eliom_output.Html5#VALstring_button

编辑:我认为 Eliom 文档中的类型签名

name:[< string Eliom_parameters.setone ] Eliom_parameters.param_name
type +'a param_name
type 'a setone = [ `One of 'a | `Set of 'a ]

意味着我会使用类似的东西

~name:(`One "name_goes_here")

具有类型签名

[> `One of string ]

这会让我相信我需要使用

~name:(`One "name_goes_here") param_name

获取

[< string Eliom_parameters.setone ] Eliom_parameters.param_name

但它只产生以下错误:

Error: Parse error: currified constructor

我做错了什么?

该参数的类型乍一看确实有点混乱,但通过查看类型的每个元素,实际上很容易理解:

Eliom_parameters.param_name

从 Eliom 文档中:

键入 'A param_name

参数名称的抽象类型。'a类型参数是幻像类型,通常是Eliom_parameters的子类型。setoneradio,用于表示参数的arity。

在这里,幻像类型意味着类型参数

实际上不会出现在类型定义中,而只是作为一种帮助类型检查器进一步区分值的方法,而不仅仅是其原始的"未修饰类型"(我的意思是没有幻像参数类型的类型)。换句话说,无论'a是什么,它都不会更改函数期望的实际值,但可能会限制哪个其他函数可以在键入该值后操作该值。

也就是说,itelf 类型是一个抽象类型,这意味着我们不能直接构造该类型的值,我们必须依靠框架中包含的函数为我们提供它们。

如果我们看一下如何在 eliom 中构造服务,我们会注意到表单是使用此类值的占位符构建的,并且用一个函数包装,该函数为每个值都有一个参数。这让我们可以构建可重用且有意义的 html 片段,例如具有强类型参数的表单。

文档证实了这一见解:

Eliom重新定义了大多数表单元素(输入,文本区域,复选框等),以便可以检查表单的类型以及服务的类型

在您的情况下,元素尚未嵌入到表单中,因此最好的选择可能是使用所谓的原始元素。它们中的大多数(如果不是全部)与常规表单小部件位于相同的模块中;您希望使用的参数称为raw_button,并接受namevalue参数的string参数。

相关内容

  • 没有找到相关文章

最新更新