为节约性能,将 Class 与 Style 的表达式通过 compiler 硬编码到 uni-app 中,支持语法和转换效果如下:
    class支持的语法:

    1. <view :class="{ active: isActive }">111</view>
    2. <view class="static" v-bind:class="{ active: isActive, 'text-danger': hasError }">222</view
    3. <view class="static" :class="[activeClass, errorClass]">333</view>
    4. <view class="static" v-bind:class="[isActive ? activeClass : '', errorClass]">444</view>
    5. <view class="static" v-bind:class="[{ active: isActive }, errorClass]">555</view>

    style 支持的语法:

    1. <view v-bind:style="{ color: activeColor, fontSize: fontSize + 'px' }">666</view>
    2. <view v-bind:style="[{ color: activeColor, fontSize: fontSize + 'px' }]">777</view>

    不支持 Vue官方文档:Class 与 Style 绑定 中的 classObject 和 styleObject 语法。
    此外还可以用 computed 方法生成 class 或者 style 字符串,插入到页面中,举例说明:

    1. <template>
    2. <!-- 支持 -->
    3. <view class="container" :class="computedClassStr"></view>
    4. <view class="container" :class="{active: isActive}"></view>
    5. <!-- 不支持 -->
    6. <view class="container" :class="computedClassObject"></view>
    7. </template>

    动态菜单切换示例:

    1. <template>
    2. <scroll-view class="menus">
    3. <view v-for="(menu, index) in menus" :class="[index == currentIndex ? 'menuActive' : '']">{{menu}}</view>
    4. </scroll-view>
    5. </template>
    6. <script>
    7. export default {
    8. data: {
    9. return{
    10. currentIndex : 0,
    11. menus : [
    12. '新闻', '汽车', '读书'
    13. ]
    14. }
    15. },
    16. onLoad:function(options){
    17. console.log("onLoad");
    18. },
    19. onHide:function(){
    20. console.log("onHide");
    21. },
    22. onShow:function(){
    23. console.log("onShow");
    24. }
    25. }
    26. </script>
    27. <style>
    28. .menus{width:700px; margin:0 auto; padding:20px 0px;}
    29. .menus view{padding:8px; line-height:20px; font:38px; float:left;}
    30. .menuActive{color:#900;}
    31. </style>