0

我正在开发一个带有 sencha touch 2.2.0 alpha 的 webapp。我正在使用导航视图,我在其中推送其他视图。当设备离线时,这些视图的某些元素必须具有不同的外观。为此,我检查 navigator.onLine 并且 - 如果为 false - 我将“离线”类添加到元素中。这在我第一次在元素上执行时按预期工作。但是当我通过按下后退按钮弹出视图然后再次将视图推送到堆栈时,该类不会添加到 html 中。如代码所示,我在 dom 中查找所有 li 元素,如果它们的 id 以“link”开头,则添加该类。当我记录元素时,我可以看到没有添加类,但是当我记录对象(代码中的“obj”)时,“dom”属性告诉我它是。任何想法我做错了什么或误解?

if ( !navigator.onLine )
{
    lis = Ext.DomQuery.select('li');

    for ( i = 0; i < lis.length; i ++ )
    {
        if ( lis[i].id.substring(0, 4) == 'link' )
        {   
            obj = Ext.get(lis[i].id);   
            obj.addCls('offline');
        }
    }
}
4

1 回答 1

1

正如我在上面的评论中提到的,您应该只添加一个 className<body>并在您的 CSS 选择器中使用它。

至于您的代码:它不起作用,因为 Sencha Touch 中的 DOM 结构是自动生成的,所以当您使用 Ext.DomQuery 手动添加一个类时,它可能不会留在元素上,因为它可能会再次被删除/创建。要将类添加到 Sencha Touch 中的视图/组件,您应该使用cls视图的配置:

{
    xtype: 'container',
    html: 'My view!',
    cls: 'myCustomClass'
}
于 2013-02-22T12:22:09.920 回答