집 >위챗 애플릿 >미니 프로그램 개발 >{{뷰 레이어 보기}} WeChat 애플릿
WeChat 애플릿 뷰 뷰 레이어 //자습
1. 데이터 바인딩
数据绑定 WXML中的动态数据均来自对应Page的data。 简单绑定 数据绑定使用"Mustache"语法(双大括号)将变量包起来,可以作用于: 内容 <view> {{ message }} </view> Page({ data: { message: 'Hello MINA!' } }) 组件属性(需要在双引号之内) <view id="item-{{id}}"> </view> Page({ data: { id: 0 } }) 控制属性(需要在双引号之内) <view wx:if="{{condition}}"> </view> Page({ data: { condition: true } }) 关键字(需要在双引号之内) true:boolean 类型的 true,代表真值。 false: boolean 类型的 false,代表假值。 <checkbox checked="{{false}}"> </checkbox> 特别注意:不要直接写 checked="false",其计算结果是一个字符串,转成 boolean 类型后代表真值。 运算 可以在{{}}内进行简单的运算,支持的有如下几种方式: 三元运算 <view hidden="{{flag ? true : false}}"> Hidden </view> 算数运算 <view> {{a + b}} + {{c}} + d </view> Page({ data: { a: 1, b: 2, c: 3 } }) view中的内容为3 + 3 + d 逻辑判断 <view wx:if="{{length > 5}}"> </view> 字符串运算 <view>{{"hello" + name}}</view> Page({ data:{ name:"MINA" } }) 数据路径运算 <view>{{object.key}} {{array[0]}}</view> Page({ data: { object: { key: 'Hello ' }, array: ['MINA'] } }) 组合 也可以在Mustache内直接进行组合,构成新的对象或者数组 数组 <view wx:for-items="{{[zero, 1, 2, 3, 4]}}"> {{item}} </view> Page({ data: { zero: 0 } }) 最终组合成数组[0, 1, 2, 3, 4] 对象 <template is="objectCombine" data="{{for: a, bar: b}}"></template> Page({ data: { a: 1, b: 2 } }) 最终组合成的对象是{for: 1, bar: 2} 也可以用扩展运算符...来将一个对象展开 <template is="objectCombine" data="{{...obj1, ...obj2, e: 5}}"></template> Page({ data: { obj1: { a: 1, b: 2 }, obj2: { c: 3, d: 4 } } }) 最终组合成的对象是{a: 1, b: 2, c: 3, d: 4, e: 5} 如果对象的key和value相同,也可以间接地表达 <template is="objectCombine" data="{{foo, bar}}"></template> Page({ data: { foo: 'my-foo', bar: 'my-bar' } }) 最终组合成的对象是{foo: 'my-foo', bar:'my-bar'} 注意:上述方式可以随意组合,但是如有存在变量名相同的情况,后边的会覆盖前面,如 <template is="objectCombine" data="{{...obj1, ...obj2, a, c: 6}}"></template> Page({ data: { obj1: { a: 1, b: 2 }, obj2: { b: 3, c: 4 }, a: 5 } }) 最终组合成的对象是{a: 5, b: 3, c: 6}
2. 조건부 렌더링
아아앙미나에서는 우리 코드 블록을 렌더링해야 하는지 여부를 결정하려면 wx:if="{{condition}}"
을 사용하세요:
<br/>
wx:elif
및 wx:else
를 사용하여 else 블록을 추가할 수도 있습니다:
3c606e1b97da21723c70a4ab47bb0678 True de5f4c1163741e920c998275338d29b2
wx:if
는 제어 속성이므로 태그에 추가해야 합니다. 그러나 여러 구성 요소 태그를 한 번에 판단하려면 2b5957c2850173214f4ea7f1261e9a0f
태그를 사용하여 여러 구성 요소를 래핑하고 그 위에 wx:if
제어 속성을 사용할 수 있습니다.
5904a992bd6308add0f2abf1f981b0d1 5}}"> 1 de5f4c1163741e920c998275338d29b27f2cdb4f9f7287f6dc7b3deed0ef223c 2}}"> 2 de5f4c1163741e920c998275338d29b24c5a0e488bddc8c4ab9c2c6dc9e1bbc4 3 de5f4c1163741e920c998275338d29b2
참고: 2b5957c2850173214f4ea7f1261e9a0f
는 구성 요소가 아니며 페이지에서 렌더링을 수행하지 않고 컨트롤 속성만 허용하는 래핑 요소일 뿐입니다.
wx:if
vs hidden
wx:if
의 템플릿에도 데이터 바인딩이 포함될 수 있으므로 wx:if
스위치의 조건부 값이 있을 때 MINA 전환 시 조건부 블록이 파괴되거나 다시 렌더링되도록 보장하기 때문에 로컬 렌더링 프로세스가 있습니다.
동시에 wx:if
도 lazy입니다. 초기 렌더링 조건이 false
인 경우 MINA는 아무것도 하지 않고 처음으로 조건이 true가 될 때만 부분 렌더링을 시작합니다. 시간. .
이에 비해 hidden
는 훨씬 간단하며 구성 요소는 항상 렌더링되며 표시하고 숨기는 간단한 컨트롤입니다.
일반적으로 wx:if
의 전환 비용이 더 높고 hidden
의 초기 렌더링 비용이 더 높습니다. 따라서 빈번한 전환이 필요한 경우 hidden
를 사용하는 것이 좋으며 런타임 중에 조건이 변경될 가능성이 없다면 wx:if
을 사용하는 것이 좋습니다.
2ef10c6f8dda33bfc9f72b211b138cae 89c662c6f8b87e82add978948dc499d2 view1 de5f4c1163741e920c998275338d29b2 89c662c6f8b87e82add978948dc499d2 view2 de5f4c1163741e920c998275338d29b236b196a5d42bcd29e331cb722979f9a6
3. TP의 volist for 루프와 유사한 목록 렌더링
<br/>
4. WeChat 애플릿 템플릿(템플릿)
在组件上使用wx:for控制属性绑定一个数组,即可使用数组中各项的数据重复渲染该组件。 默认数组的当前项的下标变量名默认为index,数组当前项的变量名默认为item <view wx:for="{{items}}"> {{index}}: {{item.message}} </view> Page({ items: [{ message: 'foo', },{ message: 'bar' }] }) 使用wx:for-item可以指定数组当前元素的变量名 使用wx:for-index可以指定数组当前下标的变量名: <view wx:for="{{array}}" wx:for-index="idx" wx:for-item="itemName"> {{idx}}: {{itemName.message}} </view> wx:for也可以嵌套,下边是一个九九乘法表 <view wx:for="{{[1, 2, 3, 4, 5, 6, 7, 8, 9]}}" wx:for-item="i"> <view wx:for="{{[1, 2, 3, 4, 5, 6, 7, 8, 9]}}" wx:for-item="j"> <view wx:if="{{i <= j}}"> {{i}} * {{j}} = {{i * j}} </view> </view> </view> block wx:for 类似block wx:if,也可以将wx:for用在<block/>标签上,以渲染一个包含多节点的结构块。例如: <block wx:for="{{[1, 2, 3]}}"> <view> {{index}}: </view> <view> {{item}} </view> </block> wx:key 如果列表中项目的位置会动态改变或者有新的项目添加到列表中,并且希望列表中的项目保持自己的特征和状态(如 <input/> 中的输入内容,<switch/> 的选中状态),需要使用 wx:key 来指定列表中项目的唯一的标识符。 wx:key 的值以两种形式提供 字符串,代表在 for 循环的 array 中 item 的某个 property,该 property 的值需要是列表中唯一的字符串或数字,且不能动态改变。 保留关键字 *this 代表在 for 循环中的 item 本身,这种表示需要 item 本身是一个唯一的字符串或者数字,如: 当数据改变触发渲染层重新渲染的时候,会校正带有 key 的组件,框架会确保他们被重新排序,而不是重新创建,以确保使组件保持自身的状态,并且提高列表渲染时的效率。 如不提供 wx:key,会报一个 warning, 如果明确知道该列表是静态,或者不必关注其顺序,可以选择忽略。 示例代码: <switch wx:for="{{objectArray}}" wx:key="unique" style="display: block;"> {{item.id}} </switch> <button bindtap="switch"> Switch </button> <button bindtap="addToFront"> Add to the front </button> <switch wx:for="{{numberArray}}" wx:key="*this" style="display: block;"> {{item}} </switch> <button bindtap="addNumberToFront"> Add to the front </button> Page({ data: { objectArray: [ {id: 5, unique: 'unique_5'}, {id: 4, unique: 'unique_4'}, {id: 3, unique: 'unique_3'}, {id: 2, unique: 'unique_2'}, {id: 1, unique: 'unique_1'}, {id: 0, unique: 'unique_0'}, ], numberArray: [1, 2, 3, 4] }, switch: function(e) { const length = this.data.objectArray.length for (let i = 0; i < length; ++i) { const x = Math.floor(Math.random() * length) const y = Math.floor(Math.random() * length) const temp = this.data.objectArray[x] this.data.objectArray[x] = this.data.objectArray[y] this.data.objectArray[y] = temp } this.setData({ objectArray: this.data.objectArray }) }, addToFront: function(e) { const length = this.data.objectArray.length this.data.objectArray = [{id: length, unique: 'unique_' + length}].concat(this.data.objectArray) this.setData({ objectArray: this.data.objectArray }) }, addNumberToFront: function(e){ this.data.numberArray = [ this.data.numberArray.length + 1 ].concat(this.data.numberArray) this.setData({ numberArray: this.data.numberArray }) }
4. WeChat 애플릿 이벤트
이벤트는 뷰 계층에서 논리 계층으로의 통신 방법입니다.
이벤트는 처리를 위해 사용자 행동을 논리 계층에 피드백할 수 있습니다.
이벤트는 트리거 이벤트에 도달하면 논리 계층의 해당 이벤트 처리 기능이 실행됩니다.
이벤트 객체는 ID, 데이터세트, 터치와 같은 추가 정보를 전달할 수 있습니다.
5. 위챗 미니 프로그램 명언
模板 WXML提供模板(template),可以在模板中定义代码片段,然后在不同的地方调用。 定义模板 使用name属性,作为模板的名字。然后在dcdc0fa59b5fea5bdae0d810c3919fcd内定义代码片段,如:54f3d529338bcb741f3f99c26e3641df769ceea5cd9767431e1522ad1a80c4b7 89c662c6f8b87e82add978948dc499d2 28f128881ce1cdc57a572953e91f7d0f {{index}}: {{msg}} 273e21371c5d5e701d3c98517a0bfa41 28f128881ce1cdc57a572953e91f7d0f Time: {{time}} 273e21371c5d5e701d3c98517a0bfa41 de5f4c1163741e920c998275338d29b221c97d3a051048b8e55e3c8f199a54b2使用模板 使用is属性,声明需要的使用的模板,然后将模板所需要的data传入,如:7408c80bece4f027af9069cb341d6f1ePage({ data: { item: { index: 0, msg: 'this is a template', time: '2016-09-15' } } }) is属性可以使用Mustache语法,在运行时来决定具体需要渲染哪个模板:a7aa616cf334cfb0c46dfd3392f697bb 89c662c6f8b87e82add978948dc499d2 odd de5f4c1163741e920c998275338d29b221c97d3a051048b8e55e3c8f199a54b21f0183d7dfbe7295e489a9cb7801cb56 89c662c6f8b87e82add978948dc499d2 even de5f4c1163741e920c998275338d29b221c97d3a051048b8e55e3c8f199a54b244b5fe78fd5b48925cbe5d337b26ca72 9893b24784abbe1b3cf40bb848045aa936b196a5d42bcd29e331cb722979f9a6
{{view view layer}} WeChat 애플릿과 관련된 더 많은 기사를 보려면 PHP 중국어 웹사이트를 참고하세요. !