codecamp

快应用 条件指令

了解框架提供的指令与组件:for,if,show,block,slot

通过本节,你将学会:

教程文档对应的项目代码文件: src/Directive目录

指令for


for指令用于循环输出一个数组类型的数据

示例如下:

<template>
  <div class="tutorial-page">

    <!-- 方式1:默认$item代表数组中的元素, $idx代表数组中的索引 -->
    <div class="tutorial-row" for="{{list}}">
      <text>{{$idx}}.{{$item.name}}</text>
    </div>

    <!-- 方式2:自定义元素变量名称 -->
    <div class="tutorial-row" for="value in list">
      <text>{{$idx}}.{{value.name}}</text>
    </div>

    <!-- 方式3:自定义元素、索引的变量名称 -->
    <div class="tutorial-row" for="(personIndex, personItem) in list">
      <text>{{personIndex}}.{{personItem.name}}</text>
    </div>
  </div>
</template>

<style lang="less">
  .tutorial-page {
    flex-direction: column;

    .tutorial-row {
      width: 85%;
      margin-top: 10px;
      margin-bottom: 10px;
    }
  }
</style>

<script>
  export default {
    onInit () {
      this.$page.setTitleBar({ text: '指令for' })
    },
    data: {
      list: [{name: 'aa'}, { name: 'bb' }]
    }
  }
</script>

在渲染页面时, div.tutorial-row的结构,会根据script中的数据list的定义,被循环的生成多个

注意:

  • 自定义变量表示for指令的数组索引和数组元素时,变量名不可以用$_开头;

指令if


if 条件指令,是指 if/elif/else 这 3 个相关指令,用于控制是否增加或者删除组件;

if/elif/else 节点必须是相邻的兄弟节点

<template>
  <div>
    <text if="{{display}}">Hello-1</text>
    <text elif="{{display}}">Hello-2</text>
    <text else>Hello-3</text>
  </div>
</template>

<script>
  export default {
    // 页面级组件的数据模型,影响传入数据的覆盖机制:private内定义的属性不允许被覆盖
    private: {
      display: false
    }
  }
</script>

    指令show


    show 指令,是指是否显示组件,用于控制组件的显示状态,并不会从 DOM 结构中删除;

    show等同于 visible=none, 主要用于在原生组件上声明;

    show 指令开始支持在自定义组件上进行声明1050+,当这样使用时,等同于在该自定义子组件的根节点上使用 show 指令;

    对于之前版本,自定义组件不支持 show 指令的需求,可以通过 props 传入参数,在自己内部使用 show 来控制是否可见;

    <template>
      <text show="{{visible}}">Hello</text>
    </template>
    
    <script>
      export default {
        // 页面级组件的数据模型,影响传入数据的覆盖机制:private内定义的属性不允许被覆盖
        private: {
          visible: false
        }
      }
    </script>

    if与show区别:

    • 当 if/elif 指令的值为 false 时,节点会从页面中移除,当 if/elif 指令值为 true,组件会动态插入节点中;
    • 当 show 指令的值为 true 时,节点可见, 当其值为 false 时,组件不可见,但节点仍会保留在页面 DOM 结构中

    总结


    指令for、if、show与是很常用的,掌握使用方法很有必要!


    快应用 列表渲染
    快应用 block组件
    温馨提示
    下载编程狮App,免费阅读超1000+编程语言教程
    取消
    确定
    目录

    快应用 参考手册

    快应用 安全

    快应用 声音音频

    关闭

    MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }