0

dojox/form/ManagerこのjsFiddleに似た、いくつかのレベルのネストを持つフォームがあります: http://jsfiddle.net/8YDjT/1/

のいずれかの名前が与えられた場合、その下にあるすべてのフォーム ウィジェットFieldsetを見つけるにはどうすればよいでしょうか?

たとえば、 、、およびfields_bのウィジェットを見つけるには、それらの名前をハードコーディングしたり、他のそのようなごまかしをしたりせずに、どうすればよいでしょうか?b_1b_2b_3

4

1 に答える 1

2

getDescendants()特定のウィジェットからすべての子 (すべてのレベル) を取得できます。次に、ウィジェットのクラスを検証してmyWidget.declaredClass、ウィジェットが であるかどうかを確認dijit.form.*できます。

例えば:

require(["dijit/registry", "dojo/ready", "dojo/parser", "dojox/form/Manager", "dijit/Fieldset", "dijit/form/TextBox"], function (registry, ready) {
    ready(function() {
        registry.byId("fieldset_a").getDescendants().forEach(function(widget) {
            if (widget.declaredClass.match(/^dijit\.form\./i)) {
                 console.log(widget); // Form widget
            }
        });
    });
});

JSFiddleもフォークしました。しかし、コールバックは DOM の準備ができており、dojo ウィジェット (dijit) が解析されている場合にのみ実行されるため、モジュールを削除して、モジュールとのdojo/domReady!自動解析に切り替えました。data-dojo-config="parseOnLoad: true"dojo/ready

于 2013-07-22T21:14:39.187 に答える