通过 Java 提供的 String.format() 方法,可以很方便的声明字符串模板,以及占位符。 但是,它不方便的是,如果我的字符串模板两个占位符希望的是同一个值: XXXXXXXX $A XXXXXX $B XXXXXX $A XXXXX 通过 String.format() 需要这么写: String.format("XXXXXXXX %s XXXXXX %s XXXXXX
截至到现在为止,除非你使用 dao.execute(Sql ...) ,一次执行多个 SQL,是事务安全的,其他的情况 均是事务不安全的,比如如下代码: Pet pet1 = dao.fetch(Pet.class,"XiaoBai"); Pet pet2 = dao.fetch(Pet.class,"XiaoHei"); pet1.setNickname("BaiBai"); pet2.se
wx:if 预期: any 用法: 根据表达式的值的 truthiness 来有条件地渲染元素。在切换时元素及它的数据绑定 / 组件被销毁并重建。 注意:如果元素是 <block/>, 注意它并不是一个组件,它仅仅是一个包装元素,不会在页面中做任何渲染,只接受控制属性。 WARNING 当和 wx:if 一起使用时,wx:for 的优先级比 wx:if 更高。详见列表渲染教程 参考: 条件渲染 -
Mpx中的模板语法以小程序模板语法为基础,支持小程序的全部模板语法,同时提供了一系列增强的模板指令及语法。 小程序原生模板语法请参考这里 Mpx提供的增强指令语法如下: wx:style动态样式 wx:class动态类名 wx:model双向绑定 wx:model-prop双向绑定属性 wx:model-event双向绑定事件 wx:model-value-path双向绑定数据路径 wx:mode
概述 Vintage 是 Sublime Text 中一个 vi 模式的包,这允许你在 Sublime Text 中使用 vi 命令。 Vintage 模式是开源的,在GitHub 上贡献你的代码吧。 启用 VI 模式 默认是禁用的,在菜单栏Preferences/Settings - Default打开配饰文件,从ignored_packages字段中移除"Vintage"即可启用 vi 模式。
Example: fork Fork is a method of XClient and you can use it to send a request to all servers that contains this service. If any of servers returns response whithout an error, Fork will return for thi
主机权限和 内容脚本匹配 是基于匹配模式定义的一组 URL。匹配模式本质上是一个以允许的 schema(http,https,file 或ftp 开头)的URL,并且可以包含 “*” 字符。特殊模式 < all_urls > 匹配以允许的 schema 开头的任何 URL。 每个模式包含 3 个部分: schema - 例如,http 或file 或 * 注意:对文件 URL 的访问不是自动的。用
模板设计:
在 fis 提供的三种语言能力中,并没有提供对声明依赖的资源进行加载的功能。因此在 YOG2 中,我们通过扩展 swig 后端模板引擎,来添加对资源的加载能力。 YOG2 会重写 html, head, body 标签用于搭建资源加载的总体框架,并且添加了 require, widget, script 标签用于处理静态资源和后端组件。 基础结构 一个基础的 YOG2 后端模板应该类似 <!doc
更新内容 在应用里有两种更新内容的方法。较好的方法是用sync自动更新内容。Syncing 能保持内容自动更新,因为它不需要用户操作。 另外一种,手动刷新需要用户通过动作或者手势启动内容更新。手动刷新提供同步的同时保持当前的滚动位置。例如在Gmail里检查新邮件。 滑动刷新 滑动刷新是一个滑动手势。可用在普通列表,方格列表的开始处和卡片集合的最近内容出现的位置(Index 0)。 位置: 典型的,
应用内搜索 当应用内包含大量信息的时候,用户希望能够通过搜索快速地定位到特定内容。 最基本的搜索包括以下过程: 打开一个搜索文本框 输入查询并提交 显示搜索结果集 然而,可以通过加入一些增强功能来显著提升搜索体验: 启用语音搜索 提供基于用户最近历史查询的搜索建议,即使是在输入查询之前 提供满足应用数据中实际结果的自动完成搜索建议 应用内搜索中有两种主要的模式:持久性搜索(persistent s
设置 应用设置允许用户选择他们对应用行为的偏好。它们授予用户真实的控制感,并且避免用户被同样的问题反复打扰。 访问设置 由于用户并不需要经常使用设置,所以它们在 UI 中并不显眼。应用中访问设置时:在任何情况下,进入“设置”的按钮都应简单命名为“设置”。如果当前的页面支持左导航栏,那么把设置放在导航栏中除“帮助及反馈”外的所有按钮的下方。另外,如果当前页面里有工具栏,把设置放在工具栏的更多操作(a
层级一 层级二 三层级或者更多 层级一 标签 只有单层导航的产品可以在顶层使用基于文本的标签。 为了避免滚动,设置一个三到四的水平标签最大值。 带有两个标签菜单的手机示例 带有三个标签菜单的手机示例 平板上,标签宽度和对齐方式由屏幕尺寸、方向以及菜单数量决定。标签可以全排也可以固定,可以居左、居中或者居右。 查看标签以获取更多信息。 平板上的带有四个段落的全排标签示例 平板上的带有标题和扩展头部的
手势 手势控制分为触发动作(Touch Mechanics,用户手指在屏幕上如何动作)和触发行为(Touch Activities,界面上特定动作在特定情境下引发的结果)。 这是因为同样的触发动作(如单次触击)在不同情境下可能会带来不同的结果(如轻触,取消,开启/关闭指示),同样单次触发行为(如放大)可能是由多种触发动作(如捏放,双次触击,双次触击拖拽等)实现。 触发动作 触发动作是用户的手指在界
错误是应用未按预期执行时出现的状况, 一般发生在: 应用无法识别用户输入的信息 系统或应用故障 用户执行的多个操作产生了冲突 用好的设计避免错误发生. 让你的应用理解用户, 而不是让用户去理解你的应用. 当错误不可避免的发生时, 向用户传达清晰的信息能更好地让用户理解发生了什么以及如何快速解决它. 随时随刻保存当前状态, 尤其是用户输入内容时. 在众多反馈信息中找到最重要的优先显示, 确保正确的信