Edit: Обновлен Elm 0.18
Если конфигурация не меняется в течение всего срока службы вашего приложения, вы, вероятно, будет лучше всего с помощью Html.App.programWithFlags.
Это позволяет вашей функции main
принимать одно значение из Javascript во время инициализации. Это единственное значение может быть простым javascript-объектом или даже содержать вложенные свойства. Важная вещь заключается в определении его формы внутри Вязов.
Допустим, что ваш Javascript конфигурация выглядит следующим образом:
<script>
window.options = {
foo: 123,
nested: { bar: "abc" }
};
</script>
Для того, чтобы быть в состоянии передать, что в файл Вязов, вы можете определить форму соответствия так:
type alias Flags =
{ foo : Int
, nested : { bar : String }
}
сейчас вы можете использовать programWithFlags
в вашем файле Elm следующим образом, определяя функцию init
, которая принимает Flags
в качестве аргумента:
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 во время инициализации. Ваш HTML и Javascript должен выглядеть следующим образом (соответствующая часть Попутно window.options
в качестве второго параметра embed()
):
<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.programWithFlags] (http://package.elm-lang.org/packages/elm-lang/html/1.0.0/Html- App # programWithFlags) –
Это не так. Вероятно, это то, чего я хочу. Я буду играть с этим завтра. Благодаря! – beta