0

dojox mvc repeat と group を使って dojox mobile アコーディオンを作ってみました。dojox.mvc.Repeat の data-dojo-props で removeRepeatNode:true を使用しようとしたところ、JS エラーが発生しました。

dojo/parser::parse() エラー TypeError: b._at は未定義です

Dojo 1.9を使用しています

これに関して誰も助けることができますか?

4

1 に答える 1

0

Dojo-interest メーリング リストで同じ質問を見ました。dojox/mvc/Repeatは非推奨のモジュールです。dojox/mvc/WidgetListがそれに取って代わります。

以下のコードは、dojox/mobile/Accordionをdojox/mvc/WidgetListで使用する方法を示しています。

<!DOCTYPE html>
<html>
    <head>
        <title>Accordion</title>
        <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/dojo/1.9.0/dojox/mobile/deviceTheme.js"
            data-dojo-config="mblThemeFiles: ['base', 'Accordion']"></script>
        <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/dojo/1.9.0/dojo/dojo.js"
            data-dojo-config="async: 1, parseOnLoad: 0"></script>
        <script type="text/javascript">
            require([
                "dojo/_base/declare",
                "dojox/mvc/at",
                "dojox/mobile/parser",
                "dojox/mobile/Accordion",
                "dojox/mvc/WidgetList",
                "dojox/mvc/Output",
                "dojox/mvc/_InlineTemplateMixin",
                "dojox/mobile",
                "dojox/mobile/ContentPane"
            ], function(declare, at, parser, Accordion){
                declare("my.Accordion", Accordion, {
                    addChild: function(widget, index){
                        this.inherited(arguments, [widget, index * 2]);
                    }
                })
                window.at = at;
                window.model = [
                    {title: "foo", content: "Foo", selected: true},
                    {title: "bar", content: "Bar"},
                    {title: "baz", content: "Baz"}
                ];
                parser.parse();
            });
        </script>
    </head>
    <body>
        <div data-dojo-type="my.Accordion"
            data-dojo-mixins="dojox/mvc/WidgetList,dojox/mvc/_InlineTemplateMixin"
            data-dojo-props="children: model"
            data-mvc-child-type="dojox/mobile/ContentPane"
            data-mvc-child-mixins="dojox/mvc/Templated"
            data-mvc-child-props="label: at(this.target, 'title'), selected: at(this.target, 'selected')">
            <script type="dojox/mvc/InlineTemplate">
                <div>
                    <span data-dojo-type="dojox/mvc/Output"
                        data-dojo-props="value: at('rel:', 'content')"></span>
                </div>
            </script>
        </div>
    </body>
</html>

いくつかのトリックは次のとおりです。

詳細については、メーリング リストの返信を参照してください。

ベスト、アキラ

于 2013-11-11T15:18:06.973 に答える