Monaca 应用程序在仪表板预览中工作,但不适用于 Android 6 手机

Posted

技术标签:

【中文标题】Monaca 应用程序在仪表板预览中工作,但不适用于 Android 6 手机【英文标题】:Monaca app working in dashboard preview but not on Android 6 phone 【发布时间】:2017-09-10 17:58:32 【问题描述】:

我正在尝试修改 Onsen-UI 的基本待办事项列表示例。

我在菜单中添加了一个新按钮。

<ons-toolbar-button id="resptab" >
    <ons-icon icon="ion-pie-graph" size="28px"></ons-icon>
    Table
</ons-toolbar-button>

还有一个包裹列表的导航器

<ons-splitter id="splitter">
    <ons-splitter-side id="splitter-menu" page="menu.html" 
        side="left"  collapse swipeable>
    </ons-splitter-side>
    <ons-splitter-content>
        <ons-navigator id="myNavigator" animation="slide" page="list.html"/>
    </ons-splitter-content>
</ons-splitter>

我正在通过事件侦听器从脚本推送新页面

document.querySelector('#resptab').addEventListener('click', this.setRespTable.bind(this));

还有一个函数

todo.setRespTable = function() 
    ons.notification.prompt('Switch to responsive table view',
        title: 'Responsive Table',
        cancelable: true,

        callback: function(label) 
            document.querySelector('#myNavigator').pushPage('table.html')
        .bind(this)
    );    

在我的桌面仪表板中使用 Preview 一切正常,但是当我在 Galaxy android 6 手机上使用 Monaca Debugger 尝试它时,它失败,日志中显示 querySelectornull 的错误

我还注意到,当我在 Android 手机上运行应用程序时,菜单中没有显示上述按钮,而 - 再次 - 我可以从仪表板预览中看到它。

【问题讨论】:

【参考方案1】:

通过用菜单项替换按钮解决了这两个问题

<ons-list>
    <ons-list-item data-filter="all" tappable>All</ons-list-item>
    <ons-list-header>Status</ons-list-header>
    <ons-list-item data-filer="uncompleted">Pending</ons-list-item>
    <ons-list-item data-filter="completed">Completed</ons-list-item>
    <ons-list-header>Responsive</ons-list-header>
    <ons-list-item id="resptab" ><ons-icon icon="ion-pie-graph" size="28px"></ons-icon>RxTable</ons-list-item>        
</ons-list>

并通过在菜单初始化中设置事件处理程序

document.addEventListener('init', function(event) 
    var view = event.target.id;
    if (view === 'menu' || view === 'list') 
        todo[view + 'Init'](event.target);
    ;
, false);

哪个调用

todo.menuInit = function(target) 
    document.querySelector('#resptab').addEventListener('click', this.setRespTable.bind(this));     

在article的末尾有对应版本的OnsenUI with React,下面是渲染函数的摘录:

<Page>
    <List dataSource=['Searching', 'Lists', 'Twitting', 'Google Drive','Settings']
    renderRow=(title) => (
        <ListItem key=title 
        onClick=() => this.hide2title(title) tappable>title
        </ListItem>
    )/>
</Page>

在后一种情况下,请注意将值传递给方法的数组函数。

【讨论】:

以上是关于Monaca 应用程序在仪表板预览中工作,但不适用于 Android 6 手机的主要内容,如果未能解决你的问题,请参考以下文章

应用程序在模拟器上部署失败,但预览器在 Xamarin 中工作......我不知道出了啥问题?

android:在模拟器中工作但不在手机上的联系人提供程序

从 Java 启动 OpenOffice 服务 (soffice) 的问题(在命令行中工作的命令,但不是从 Java 中)

Psycopg2 SQL 语句在查询生成器中工作,但不是在 Python 中

项目在日食中工作,但不是在装在罐子里之后

时间过滤器快捷方式如何在 KIbana 中工作?