Express 字符串

在日常开发中,经常需要拼接各种各样的字符串,这些字符串的值由页面内容(比如标签(元素)的内容、地址参数等)组成。Express 字符串 提供了使用占位符的方法来组成字符串,这是一种非常简单的方法。使用 Express 方法,字符串不需要拼接,只需要简单的设置占位符即可。Express 字符串支持几种格式的占位符,下面依次介绍。

Express 字符串应用范围

Express 字符串应用范围比较多

另外,root.js 中与 Ajax 相关的几个方法的 URL 地址或能写 PQL 语句的地方都支持使用 Express 字符串。Express 字符串会逐渐增多。

URL 地址参数占位符

通过地址参数占位符可以直接获取 URL 地址中传递的参数。占位符格式 &(param)。地址参数占位符不支持defaultValue格式,如果参数名称不存在,则值为null。参数名称 区分大小写

如果使用了 Voyager 模板引擎,则以上代码与以下代码功能完全相同。

区别是前者在客户端浏览器中进行计算,后者在服务器端进行计算。

数据占位符

数据占位符的数据来自于 MODEL、TEMPLATE、FOR、SPAN、O 等标签,如增强属性可以调取 MODEL 标签的数据。在 root.js 库中,数据占位符格式是统一的。

数据占位符的标准格式为@data.property[index]|column|.method()?(defaultValue)!

假如有接口返回数据如下,数据名字为students

更多可以参阅数据占位符

DOM 操作符

在前端功能开发中,经常需要用选择器获取标签,读取标签的值或属性,标签库提供了更方便快捷的方法进行 DOM 导航。

DOM 占位符标准格式为$(selector).property[index][attr].method()?(defaultValue)!,各个符号的含义分别说明如下:

可以多个不同或相同的符号进行组合,以定位到需要的元素或得到需要的值。几个示例:

Javascript 短句和语句

当上面介绍的操作不能满足数值加工需求时,可使用 Javascript 短句 做值做进一步处理。Javascript 短句占位符格式为 ~{ javascript expression... }。一般情况下,其中的~可以省略。

短句类似于赋值语句的右半部分,如:

极端情况下,业务逻辑有可能更复杂,短句也不能满足需求了,还可以使用 Javascript 语句占位符,格式为 ~{{ javascript statement... }}。语句类似于一个函数内的所有语句,可以对数据进行任何操作,但必须通过return返回值。一般情况下,其中的~可以省略。如下例:

在 Javascript 语句中使用地址参数和 DOM 占位符

可以使用字符串的扩展方法$p来解析含有占位符的字符串

如果要传递从某个元素开始,可以把元素当参数传递进去

Javascript 表达式中的默认变量

在 Javascript 两种占位符中,可以使用三个预设的变量,分别为valuetextdata,指定当前组件的属性或回调函数的变量。分别解释如下:

  • value 指向当前组件的value属性值,如 Input、Select等组件都有value属性。
  • text 指向当前组件的text属性值,如 Select 组件都text属性(表示当前选中项的文本)。
  • data 指向请求接口或执行 PQL 语句返回的结果。下例中当执行失败时显示返回的数据信息。

以上三个变量都可以继续操作,如{ data.message }{ value.trim() }。这三个变量也可以用到 Javacript 语句占位符中{{ return data.status + value; }}

对结果值进行 URI 编码

特别是在接口地址中,经常要传递各种数据,就避免不了要对传递的值进行编码,即 Javascript 的 encodeURIComponent 全局方法。可以使用百分号%作为占位符的结尾,以表示对结果值进行 URL 编码。因为程序并不清楚什么时候需要编码,什么时候不需要编码,所以编码操作需要开发者主动进行。编码符号%适用于以上介绍的所有占位符。

也可以直接对常量进行编码:

很少的情况下会遇到字符冲突,例如:

这时的本意是匹配以关键词开始的所有结果,%在这里有特殊的意义。解决方法是使用 Javascript 表达式,稍微得多写几个字符。

其实写两个也可以,path LIKE '$(#Filter)%%'


参考链接


微信公众号
码农老吴  |  星源工作室  |  开发月志  |  问题反馈
联系我们:wu@qross.io     手机/微信:18618171102
京 ICP 备 20027445 号
$(h1)!