【问题标题】:dojox mobile accordion using dojo mvc not working使用dojo mvc的dojox移动手风琴不起作用
【发布时间】:2013-11-22 21:19:02
【问题描述】:

我尝试使用 dojox mvc repeat 和 group 创建 dojox 移动手风琴。我什至尝试在 dojox.mvc.Repeat 的 data-dojo-props 中使用 removeRepeatNode:true ,我得到一个 JS 错误

dojo/parser::parse() 错误 TypeError: b._at 未定义

我正在使用 dojo 1.9

有人可以帮忙吗?

【问题讨论】:

    标签: dojo dojox.mobile


    【解决方案1】:

    我在dojo-interest mailing list 看到了同样的问题。 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>
    

    一些技巧是:

    请参阅my mailing list reply 了解更多信息。

    最好, 晃

    【讨论】:

    • 感谢用户的回答,但我在工作灯中仍然存在一些问题。小提琴中的代码运行良好,但我正在开发一个 worklight 6 移动应用程序,现在我面临着不同的问题。在我的项目中,当我需要 dojox.mvc.WidgetList 时,我在 _TemplatedMixin.js 处收到服务器错误 500。我以前也试过这个,结果是一样的。即使我没有在我的 html 中的任何地方使用 dojox.mvc.WidgetList 而我只是需要它,我也会收到该错误
    • 两个建议:1) 鉴于您说加载 _TemplatedMixin.js 时发生错误,您可能想看看是否有任何模板小部件在您的环境中工作。 2) 鉴于特定产品 (Worklight) 会发生这种情况,您可能需要联系该产品的支持人员。
    • 我有一个类似的问题,除了我有多个孩子应该在每个手风琴中。小提琴似乎只有在存在一对一关系时才有效。有没有办法为孩子做第二个循环?你可以让wigetlist成为wiget列表的孩子吗?现在我有一堆按类别分隔的列表项,我使用 dojox.dtl 来做。试图将我们的代码迁移到 mvc
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-11
    • 2019-08-09
    • 2014-08-17
    • 2013-03-16
    • 2020-10-28
    相关资源
    最近更新 更多