Javascript dojo ListItem:调整大小时显示样式更改

Javascript dojo ListItem:调整大小时显示样式更改,javascript,html,css,dojo,Javascript,Html,Css,Dojo,很抱歉,我无法提供一个工作的JSFIDLE代码段。如果我了解如何将下面的代码放在问题中,我将更新该问题 使用dojox/mobile我用自定义列表项填充EdgeToEdgeStoreList。一些代码: html(jade) js 设备列表 就像模板字符串一样。调整大小后,内部div变为: <div style="display: block;" data-dojo-attach-point="labelNode">n.a.</div> n.a。 如果没有“内联”,所

很抱歉,我无法提供一个工作的JSFIDLE代码段。如果我了解如何将下面的代码放在问题中,我将更新该问题

使用
dojox/mobile
我用自定义
列表项填充
EdgeToEdgeStoreList
。一些代码:

html(jade) js 设备列表 就像模板字符串一样。调整大小后,内部
div
变为:

<div style="display: block;" data-dojo-attach-point="labelNode">n.a.</div>
n.a。
如果没有“内联”,所有的布局都会混乱,因此字段“消失”(实际上是在下面,在下一行后面)

我想知道为什么会发生这种情况-显示样式被硬编码到模板字符串中

此外,我在运行时检查了CSS规则,这不是因为它们,而是html发生了变化——事实上。

ListItem(dojox/Mobile/ListItem.js中的源代码)具有以下功能:

resize: function(){
    if(this.variableHeight){
        this.layoutVariableHeight();
    }

    // labelNode may not exist only when using a template (if not created by an attach point)
    if(!this._templated || this.labelNode){
        // If labelNode is empty, shrink it so as not to prevent user clicks.
        this.labelNode.style.display = this.labelNode.firstChild ? "block" : "inline";
    }
},
此函数在调整大小后调用,如您所见,将labelNode显示样式设置为“块”


定义DeviceListItem时,可以替换此函数,保持原始源代码不变,但更改显示样式。

I似乎可以工作。但我认为
labelNode
中填充了
label
值。我的意思是,
标签
值是否绑定到
标签节点
?是的。我想
this.labelNode.firstChild
只是用来检查它是否为空。是的,现在我理解了代码,但不是预期的默认行为!无论如何,重新实现这个功能似乎可以解决我的需要。我要做一些其他的测试,然后我会接受你的答案!
define([
    "dojox/mobile/ListItem",
    "dijit/_TemplatedMixin",
    "dojo/_base/declare"
], function (ListItem, TemplatedMixin, declare) {
    var template =
        "<div class='deviceDone${done}'>" +
        "       ${id} - <div style='display: inline-block;' data-dojo-attach-point='labelNode'></div>" +
        "       <div class='deviceCategory'>${category}</div>" +
        "</div>";

    TemplatedListItem = declare("DeviceListItem",
        [ListItem, TemplatedMixin], {
            id: "",
            label: "",
            category: "",
            done: "false",
            templateString: template
        }
    );
});
<div id="item1728" class="deviceDoneFalse mblListItem mblListItemUnchecked" tabindex="0" widgetid="item1728" aria-selected="false" role="option">
    item1728 - 
    <div style="display: inline-block;" data-dojo-attach-point="labelNode">n.a.</div>
    <div class="deviceCategory">General purpose</div>
</div>
<div style="display: block;" data-dojo-attach-point="labelNode">n.a.</div>
resize: function(){
    if(this.variableHeight){
        this.layoutVariableHeight();
    }

    // labelNode may not exist only when using a template (if not created by an attach point)
    if(!this._templated || this.labelNode){
        // If labelNode is empty, shrink it so as not to prevent user clicks.
        this.labelNode.style.display = this.labelNode.firstChild ? "block" : "inline";
    }
},