0

Dojo を初めて使用するので、ストレージからの読み取り、XHR などの値で Dijit フォームを初期化しようとしています。

ただし、呼び出すと、http: //yandex.st/dojo/1.7.3/dojox//form/manager/_Mixin.jsによってスローされるform.setFormValues()エラーが発生します。TypeError: invalid 'in' operand this.formWidgets

私が間違っていることはありますか、それとも Dojo の問題ですか? (完全なサンプルもここにあります: http://pastebin.com/7LUHr3iA )

<!-- language-all: lang-html -->
`
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/dojo/1.7.3/dijit/themes/claro/claro.css" media="screen">

    <script type="text/javascript">
        dojoConfig = {async: true,parseOnLoad: true};
    </script>
    <script type="text/javascript" src="http://yandex.st/dojo/1.7.3/dojo/dojo.js"></script>

    <script type="text/javascript">
        require(["dijit/form/TextBox","dijit/form/Button","dojox/form/Manager",
                "dojo/parser","dojo/dom","dijit/registry"], function () {});
    </script>
</head>
<body class="claro">

    <form id="myForm" method="post" data-dojo-type="dojox.form.Manager">

        <label for="name">Name</label>
        <input id="name" name="nameField" data-dojo-type="dijit.form.TextBox"/><br/>

        <label for="surname">Surname</label>
        <input id="surname" name="surnameField" data-dojo-type="dijit.form.TextBox"/><br/>

        <button data-dojo-type="dijit.form.Button">Submit</button>

        <script type="dojo/method" event="startup">
            var form = dijit.byId("myForm");

            form.setFormValues({
                nameField: "Hello",
                surnameField: "World"
            });
        </script>
    </form>
</body>
</html>
`
4

1 に答える 1

0

Dojo 1.7 は非同期です。コードは次の形式を取る必要があります。

require(["dependency"], function(dep) {
  // use dependency
});

dojox/form/Managerページのさらに下で参照しようとすると、ロードされると信じる理由はありません。

フォームの 1.6 スタイル コードではなく、レジストリがウィジェットを参照する正しい方法dijit.byIdです。livedocsを参照してください。

dojo/domReady!プラグインも参照してください。

于 2012-08-14T15:28:40.247 に答える