【问题标题】:should I use phonegap local storage for storing checkbox field options我应该使用 phonegap 本地存储来存储复选框字段选项吗
【发布时间】:2012-07-02 17:57:54
【问题描述】:

我从 jQuery mobile 和 Phonegap 开始。

我有一个类别选择器,并根据所选类别显示属于该类别的复选框列表。 请参阅下面我可能显示的复选框组的 1 个示例。请注意,它是隐藏的,并且只有当用户在“类别”字段中选择“位置”时,我才会显示该字段。

<select name="select-choice-0" id="category" onchange="javascript:showboxes();updateresults();">
<option value="0">Select a category</option>
<option value="4">Catering</option>   
<option value="1">Locations</option>
<option value="2">Music</option>
</select>


<div id="locationthemes_box" data-role="collapsible" style="display:none;">
<h3>Themes</h3>
<div data-role="fieldcontain">
<fieldset data-role="controlgroup">
    <legend>Theme</legend>
    <input type="checkbox" name="locationthemes" id="checkbox-1" value="2" class="custom" />
    <label for="checkbox-1">Castle</label>
    <input type="checkbox" name="locationthemes" id="checkbox-2" value="3" class="custom" />
    <label for="checkbox-2">Barn</label>
    <input type="checkbox" name="locationthemes" id="checkbox-3" value="5" class="custom" />
    <label for="checkbox-3">Restaurant</label>
    <input type="checkbox" name="locationthemes" id="checkbox-4" value="8" class="custom" />
    <label for="checkbox-4">Bar</label>
</fieldset>
</div>
</div>

现在,我想根据所选类别显示或隐藏更多复选框组。我想防止我拥有页面中未显示的复选框的 HTML。 因为这会导致不必要的带宽使用。 然后我想:也许我应该动态加载复选框组的内容,方法是在用户更改类别选择框后立即向相关复选框和值发出 Web 服务请求。

但这会导致大量的网络请求,我试图节省带宽。

所以我的想法是本地存储可能能够解决我的问题。 然后,我会将复选框值存储为名称/值字符串:
locationthemes = 2;城堡;3;谷仓;5;餐厅;8;酒吧

我的问题:这是要走的路还是有我不知道的最佳做法?
如果我的方式是建议的方式:欢迎使用 PhoneGap 使用本地存储的任何示例!

【问题讨论】:

    标签: jquery-mobile cordova local-storage


    【解决方案1】:

    如果您使用 Jquery Mobile 的单页概念,即拥有一个 HTML 并包含其中的所有页面,就像这样

    <div data-role="page" id="page1">
    <div data-role="page" id="page2">
    <div data-role="page" id="page3">
    <div data-role="page" id="page4">
    

    然后您可以使用全局变量来存储值。

    否则,您可以按照此处的说明使用 localStorage http://docs.phonegap.com/en/1.8.1/cordova_storage_storage.md.html#localStorage

    【讨论】:

    • 我确实使用单页概念。所以我会按照你的建议定义一个全局变量,如: var locationthemes = 2;Castle;3;Barn;5;Restaurant;8;Bar 如果我这样做并在外部 js 文件而不是在页。 .js 文件是否在本地缓存,以便只需要加载 HTML 文件而不是包含我的数据的 js 文件?
    • 如果您选择在外部 .js 文件中声明全局变量,那么我宁愿不这样做。如果是这种情况,请使用 localStorage。但是如果你没有外部 js 文件,那么在 HTML 文件中使用全局变量。
    【解决方案2】:

    我建议使用 localStorage 只是因为 Android 在需要时会无情地杀死您的应用程序。一旦用户将您的应用程序置于后台一段时间,或者如果他让他的手机进入睡眠状态或等待太久,那么该应用程序可能会被杀死。在这里您可以确保始终将应用程序的状态或重要变量存储在 localStorage 中,然后在应用程序重新启动时再次获取这些数据(通过简单的启动检查)..

    【讨论】:

    • 当然,后台服务也是一个有用的替代方案,但是 localStorage 非常好用且易于使用,如果您的应用程序的设计不太复杂,我会推荐它..跨度>
    猜你喜欢
    • 2015-05-24
    • 2021-04-17
    • 2014-08-19
    • 2015-08-16
    • 1970-01-01
    • 2017-07-20
    • 2014-03-31
    • 2017-04-19
    • 2016-03-05
    相关资源
    最近更新 更多