Elm guide과 해당 JavaScript interop을 통해 읽고 있습니다. 여기에 단순화 된 버전이다포트 및 가입 문제가 발생했습니다.
port module FooBar exposing (..)
import Html exposing (..)
import Html.Attributes exposing (..)
import Html.App as Html
import String
main =
Html.program
{ init = init
, view = view
, update = update
, subscriptions = subscriptions
}
-- subscriptions
port f :() -> Cmd msg
port g : (Int -> msg) -> Sub msg
subscriptions: Model -> Sub Msg
subscriptions model = g Get
-- MODEL
type alias Model = { pt : Int }
-- VIEW
view: Model -> Html Msg
view model = Html.text (toString model.pt)
-- UPDATE
type Msg = Ask | Get Int
update: Msg -> Model -> (Model, Cmd msg)
update msg model =
case msg of
Ask -> (model, f())
Get x -> (Model x, Cmd.none)
-- INIT
init: (Model, Cmd Msg)
init = (Model 0, f())
앱이 초기 0으로 설정되어 있지만, 자바 스크립트에서 메시지를 읽어와 1로 설정 될 수있다. 그러나 그것은 에 남아 있습니다. 느릅 나무 포트가 제대로 설정 되었습니까? 여기
<div id="foobar"></div>
<script src="foo.js"></script>
<script>
var node = document.getElementById("foobar");
var app = Elm.FooBar.embed(node);
app.ports.f.subscribe(
function(){
var myValue = 1;
console.log(myValue);
app.ports.g.send(myValue);
}
);
</script>
</body>
내가 넣어 : elm-make foo.elm --output=foo.js
1가 f()
포트라고있어 제안하지만, g()
포트가 다시 전송하거나 처리 없구요으로 myValue
인쇄 콘솔로 사실 정확히.
나는 "디자인 결정"을하기에 충분한 엘름을 가지고 있지 않다 ... –
우 엘메 0.17이므로 문법 변경이있을 수있다 –
나는 확실히 체크를했다. 나는'console.log'를 사용해 보았습니다. –