0

したがって、DOM全体だけでなく、次のようにコンテキストノード内でもノードをクエリできることがわかっています。

var myNode = dojo.query('#formId', 'idContext');

このようにして、DOMに同じIDを使用する別のノードがある場合でも、適切なノードを取得できます。

私が試しているのは、コンテキスト化されたノードに基づいてウィジェットを作成することです。それ以外の :

    new Form({
        method: 'post',
        action: 'aaa/bbb'
    }, 'formId');

私はしようとしています

    new Form({
        method: 'post',
        action: 'aaa/bbb'
    }, myNode);

しかし、FBugはエラーをログに記録します。

TypeError: _13.hasChildNodes is not a function
[Break On This Error]   

while(_13.hasChildNodes()){

したがって、Formの2番目のパラメータに間違ったオブジェクトを設定しているようです...dojodocsで説明されている使用法は次のとおりです。

Usage:
var foo = new dijit.form.Form(/* Object? */ params, /* **DomNode**|String */ srcNodeRef);

私はここで何かを誤解しているように感じます...しかし、あなたは思いますか?

ありがとう...

4

1 に答える 1

1

2番目のパラメーターとしてdojoNodeListオブジェクトをFormコンストラクターに渡しているようです。dojo.queryメソッドは、単一のdom要素ではなくNodeListを返します。ウィジェットコンストラクターの2番目の(オプションの)パラメーターは、ノードリストではなく、単一のdomノードです。

以下の作品

require(['dojo/dom','dijit/form/Form'],function(dom,Form){
    new Form({
        method: 'post',
        action: 'aaa/bbb'
    }, dom.byId('formId'));
}); 

ページ上に同じIDを持つ複数の要素を含めることは悪い習慣であることは言うまでもありませんが、絶対にそれを行う必要があります。IDを持つdojo.query('#testNode','idContext')[0]最初testNodeのノードを、 id idContext

require(['dojo/query','dijit/form/Form'],function(query,Form){
    new Form({
        method: 'post',
        action: 'aaa/bbb'
    }, query('#formId','idContext')[0]);
}); 
于 2012-08-06T20:13:22.853 に答える