0

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

私は何を間違っていますか?

4

1 に答える 1

1

そのパラメーターの型は、一見すると少しわかりにくいように見えますが、型の各要素を見ると、実際にはかなり理解できます。

Eliom_parameters.param_name

Eliomのドキュメントから:

「param_name」と入力してください

パラメータ名の抽象型。'atype パラメーターはファントム typeで、通常は Eliom_parameters. setoneradio のサブタイプであり、パラメーターのアリティを示すために使用されます。

ここで、ファントム型とは、型パラメーターが実際には型定義に表示されず、型チェッカーが元の「装飾されていない型」よりもさらに値を識別するのに役立つ方法としてのみ機能することを意味します (ここで意味するのは型です)ファントム パラメータ タイプなし)。言い換えれば、'aそれが何であれ、関数が期待する実際の値を変更することはありませんが、入力された値を操作できる他の関数を制限する可能性があります。

そうは言っても、型 itelf は抽象型です。つまり、その型の値を直接構築することはできず、フレームワークに含まれる関数に依存してそれらを提供する必要があります。

eliomでサービスがどのように構築されているかを見ると、この種の値のプレースホルダーを使用してフォームが構築され、これらの各値のパラメーターを備えた関数でラップされていることがわかります。これにより、厳密に型指定されたパラメーターを持つフォームのような、再利用可能で意味のある html フラグメントを構築できます。

ドキュメントは、この洞察を確認します。

Eliom はほとんどのフォーム要素 (入力、テキストエリア、チェックボックスなど) を再定義して、フォームタイプとサービスのタイプをチェックできるようにします。

あなたの場合、要素はまだフォームに埋め込まれていないため、おそらく最良のオプションは、いわゆる生の要素を使用することです。それらのほとんど (すべてではないにしても) は、通常のフォーム ウィジェットと同じモジュールにあります。使用したいものが呼び出され、とパラメータの両方の引数をraw_button取ります。stringnamevalue

于 2014-12-26T02:16:05.390 に答える