2015-12-20 32 views
2

我的工作與榆樹的一個項目,但目前我卡在以下問題:我想從榆樹更新產生的輸入字段榆樹 - 從JS更新日期輸入字段不起作用

newDate address = 
    header 
     [ id "header" ] 
     [ input 
      [ id "datePicker" 
      , autofocus False 
      , type' "date" 
      , onEnter address Add 
      ] 
      [] 
     ] 

我最初的想法是將我的.elm代碼與html,我成功這樣做,使我能夠創建自定義js腳本來與dom進行交互。

但是,在添加以下腳本(將日期設置爲當前日期)時,它似乎沒有更新日期字段。

$(document).ready(function() { 
     var now = new Date(); 

     var day = ("0" + now.getDate()).slice(-2); 
     var month = ("0" + (now.getMonth() + 1)).slice(-2); 

     var today = now.getFullYear()+"-"+(month)+"-"+(day) ; 

     $('#datePicker').val(today); 
    }); 

但是,如果我在瀏覽器控制檯本身執行此代碼,它確實有效。

有什麼想法?

在此先感謝!

-K

補充:要求榆樹融入HTML

<html> 

    <head> 
    <title>Embedded Elm</title> 
    <script type="text/javascript" src="elm.js"></script> 
    <script src="http://code.jquery.com/jquery-1.11.0.min.js"></script> 
    </head> 

    <body> 
     <div id="main" style="width:50%; height:400px;"></div> 
    </body> 

    <script type="text/javascript"> 
    var mainDiv = document.getElementById('main'); 
    Elm.embed(Elm.Main, mainDiv); 

    $(document).ready(function() { 
     var now = new Date(); 

     var day = ("0" + now.getDate()).slice(-2); 
     var month = ("0" + (now.getMonth() + 1)).slice(-2); 

     var today = now.getFullYear()+"-"+(month)+"-"+(day) ; 
     $('#datePicker').val(today); 
    }); 


    </script> 

</html> 
+0

你可以請你分享你如何包括這個腳本和榆樹應用程序在你的HTML?我在猜測這個腳本是有效的,但是在榆樹應用程序第一次渲染之前,dom ready事件就被解僱了。 – grumpyjames

+0

對我來說,它在Chrome中運行正常,但不在Firefox中運行。我猜你的JS在表單進入DOM之前運行。 – Adrian

回答

1

我想,我最初的直覺是正確的,即Elm.embed的行爲比我們或許會更喜歡異步和在元素出現在DOM中之前,回調函數將被觸發。值得一提的是,在調試器中觀察事件的順序來驗證是這種情況。

編輯:具有剛剛有了一個快速的看自己,它看起來第一榆樹框架可以通過調用同步呈現給embed。你確信你的應用程序的初始狀態導致了表單組件的包含?

在任何情況下,如果你想達到什麼是當前日期初始化場一次,這個問題可能是有用的:Initialize model with current date

編輯2:另一件事可能會造成一些問題包括<script>標籤<body>標籤關閉。這個問題似乎表明,這不是一個好主意;也許你也可以嘗試在<body>關閉之前加入它?