編集:は、あなたの設定アプリの寿命にわたって変化しない場合、あなたはおそらく最高Html.App.programWithFlagsを使用して提供されますエルム0.18に
を更新しました。
これにより、初期化中にmain
関数がJavascriptから単一の値を受け入れることができます。その単一の値は単純なjavascriptオブジェクトでも、ネストされたプロパティを含むことさえできます。重要なことは、エルムの内部でその形状を定義することです。
のは、JavaScriptの設定が次のようになりましょう:今すぐ
type alias Flags =
{ foo : Int
, nested : { bar : String }
}
:あなたのエルムファイルにそれを渡すことができるようにするために
<script>
window.options = {
foo: 123,
nested: { bar: "abc" }
};
</script>
、あなたがこのようなマッチング形状を定義することができますこのようにElmファイルにprogramWithFlags
を使用して、Flags
を引数として持つinit
関数を定義することができます。
import Html exposing (..)
import Platform.Cmd exposing (..)
import String
main =
programWithFlags
{ init = init
, view = view
, update = update
, subscriptions = subscriptions
}
init : Flags -> (Model, Cmd Msg)
init flags =
{ introText = String.concat
[ "foo is "
, toString flags.foo
, " and nested.bar is "
, flags.nested.bar
]
} ! []
パズルの最後の部分は、初期化中にJavascript設定オプションをElmに渡すことです。
<body>
<div id="myContainer"></div>
<script src="Main.js"></script>
<script>
var myContainer = document.getElementById("myContainer");
var app = Elm.Main.embed(myContainer, window.options);
</script>
</body>
Here is a working example on ellie-app.
アプリの生涯にわたる設定変更を行います。あなたのHTMLとJavaScriptは、この(関連部分は
embed()
の2番目のパラメータとしてwindow.options
を渡すことである)ようになっているはず?もしそうでなければ、あなたは[Html.programWithFlags](http://package.elm-lang.org/packages/elm-lang/html/1.0.0/Html-html-html)でelmコンポーネントを初期化するときに値を渡すことをお勧めします。 App#programWithFlags) –これはありません。それはおそらく私が望むものです。私は明日それで遊びます。ありがとう! – beta