首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >doh Hello World带有mixin的ContentPane的模板化小部件

doh Hello World带有mixin的ContentPane的模板化小部件
EN

Stack Overflow用户
提问于 2013-07-12 03:33:34
回答 1查看 663关注 0票数 0

我正在尝试运行一个样例doh测试用例。我正在测试一个模板化的小部件,它混合了dijit/layout/ContentPane中的内容。

没有错误是thrown...the组件只是不呈现而已。模板文件正在加载,因为我可以在firebug的net选项卡中看到它,但它好像没有“附加”到模板化的小部件上。当我删除ContentPane混入时,一切都按预期工作。

我们的项目在许多地方使用ContentPane来混入我们的模板化小部件,因此我们可以将我们的小部件视为布局小部件。只有在尝试使用doh加载它时,才会出现问题。

我们尝试加载的小部件:

代码语言:javascript
复制
define([
    'dijit/layout/ContentPane',
    'dijit/_WidgetsInTemplateMixin',
    'dijit/_TemplatedMixin',
    'dijit/_WidgetBase',
    'dojo/_base/declare',
    'dojo/text!./about.html'
    ], function(ContentPane, WidgetsInTemplateMixin, TemplatedMixin, WidgetBase, declare, about) {
    return declare([ContentPane, TemplatedMixin, WidgetsInTemplateMixin], {
        templateString: about,

        constructor: function() {
            this.inherited(arguments);
        },

        startup: function() {
            this.inherited(arguments);
        }
    });
});

模板:

代码语言:javascript
复制
<div>
    <div>
        <h1>foo</h1>
    </div>
</div>

doh test runner页面:

代码语言:javascript
复制
<body class="claro">
    <div style="height: 100%">
    <div id="mainContainer"
         style="height: 100%; width: 100%"
         data-dojo-type="dijit/layout/BorderContainer">
        <div data-dojo-type="dijit/layout/ContentPane"
             data-dojo-props="region: 'center'">
            <div data-dojo-type="testPackage/widgets/About/About"
                 style="width: 100px; height: 100px; background-color: green">
            </div>
        </div>
    </div>
    </div>

    <script type="text/javascript">
        require([
            'dojo/ready',
            'dojo/parser',
            'dojo/dom-style',
            'dojo/query',
            'dojo',
            'doh'
        ], function(ready, parser, domStyle, query, dojo, doh){
            ready(function() {
                parser.parse();

                doh.register("t", [
                        function setup(t){
                            var d = new doh.Deferred();

                            d.callback(true);
                            return d;
                        }
                    ]
                );
                doh.run();
            });
        });
    </script>
</body>

模板html文件中的"foo“文本未显示

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-12 22:10:04

“这样我们就可以把我们的小部件当作一个布局小部件了”...

如果你想得到的只是布局功能,你应该混入dijit/_LayoutWidget而不是dijit/ layout /ContentPane。

因此,您的小部件将变成:

代码语言:javascript
复制
define([
     'dijit/layout/_LayoutWidget',
    'dijit/_WidgetsInTemplateMixin',
    'dijit/_TemplatedMixin',
    'dojo/_base/declare',
    'dojo/text!./about.html',
    'dojo/domReady!'
], function(ContentPane, _WidgetsInTemplateMixin, _TemplatedMixin, declare, about) {
    return declare([_LayoutWidget, _TemplatedMixin, _WidgetsInTemplateMixin], {

        templateString: about,

        // ...
    });
});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17601868

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档