array(2) { ["docs"]=> array(10) { [0]=> array(10) { ["id"]=> string(3) "428" ["text"]=> string(77) "Visual Studio 2017 单独启动MSDN帮助(Microsoft Help Viewer)的方法" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(8) "DonetRen" ["tagsname"]=> string(55) "Visual Studio 2017|MSDN帮助|C#程序|.NET|Help Viewer" ["tagsid"]=> string(23) "[401,402,403,"300",404]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400964" ["_id"]=> string(3) "428" } [1]=> array(10) { ["id"]=> string(3) "427" ["text"]=> string(42) "npm -v;报错 cannot find module "wrapp"" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "zzty" ["tagsname"]=> string(50) "node.js|npm|cannot find module "wrapp“|node" ["tagsid"]=> string(19) "[398,"239",399,400]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400760" ["_id"]=> string(3) "427" } [2]=> array(10) { ["id"]=> string(3) "426" ["text"]=> string(54) "说说css中pt、px、em、rem都扮演了什么角色" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(12) "zhengqiaoyin" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400640" ["_id"]=> string(3) "426" } [3]=> array(10) { ["id"]=> string(3) "425" ["text"]=> string(83) "深入学习JS执行--创建执行上下文(变量对象,作用域链,this)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "Ry-yuan" ["tagsname"]=> string(33) "Javascript|Javascript执行过程" ["tagsid"]=> string(13) "["169","191"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511399901" ["_id"]=> string(3) "425" } [4]=> array(10) { ["id"]=> string(3) "424" ["text"]=> string(30) "C# 排序技术研究与对比" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "vveiliang" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(8) ".Net Dev" ["catesid"]=> string(5) "[199]" ["createtime"]=> string(10) "1511399150" ["_id"]=> string(3) "424" } [5]=> array(10) { ["id"]=> string(3) "423" ["text"]=> string(72) "【算法】小白的算法笔记:快速排序算法的编码和优化" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "penghuwan" ["tagsname"]=> string(6) "算法" ["tagsid"]=> string(7) "["344"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511398109" ["_id"]=> string(3) "423" } [6]=> array(10) { ["id"]=> string(3) "422" ["text"]=> string(64) "JavaScript数据可视化编程学习(二)Flotr2,雷达图" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "chengxs" ["tagsname"]=> string(28) "数据可视化|前端学习" ["tagsid"]=> string(9) "[396,397]" ["catesname"]=> string(18) "前端基本知识" ["catesid"]=> string(5) "[198]" ["createtime"]=> string(10) "1511397800" ["_id"]=> string(3) "422" } [7]=> array(10) { ["id"]=> string(3) "421" ["text"]=> string(36) "C#表达式目录树(Expression)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "wwym" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(4) ".NET" ["catesid"]=> string(7) "["119"]" ["createtime"]=> string(10) "1511397474" ["_id"]=> string(3) "421" } [8]=> array(10) { ["id"]=> string(3) "420" ["text"]=> string(47) "数据结构 队列_队列实例:事件处理" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "idreamo" ["tagsname"]=> string(40) "C语言|数据结构|队列|事件处理" ["tagsid"]=> string(23) "["246","247","248",395]" ["catesname"]=> string(12) "数据结构" ["catesid"]=> string(7) "["133"]" ["createtime"]=> string(10) "1511397279" ["_id"]=> string(3) "420" } [9]=> array(10) { ["id"]=> string(3) "419" ["text"]=> string(47) "久等了,博客园官方Android客户端发布" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(3) "cmt" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511396549" ["_id"]=> string(3) "419" } } ["count"]=> int(200) } 222 vue2.x学习笔记(六) - 爱码网

接着前面的内容:https://www.cnblogs.com/yanggb/p/12571171.html

class与style绑定

操作元素的class列表和内联样式,是数据绑定的一个常见需求。因为它们都是属性,所以我们可以用【v-bind】指令去处理它们,只需要通过表达式计算出字符串的结果即可。不过,字符串拼接麻烦且易错。因此,在将【v-bind】指令用于class和style的时候,vue做了专门的增强。表达式结果的类型,除了字符串之外,还可以是对象或数组。

绑定class的对象语法

我们可以传一个对象给【v-bind:class】指令,以达到动态切换class的目的。

<div v-bind:class="{ active: isActive }"></div>

上面的语法,表示active这个class的存在与否,取决于数据属性isActive的truthiness。

那么,你也可以在对象中传入更多的属性来动态切换多个class。除此之外,【v-bind:class】指令也可以与普通的class属性共存。

<div
  class="static"
  v-bind:class="{ active: isActive, 'text-danger': hasError }"></div>
data: {
  isActive: true,
  hasError: false
}

以上的结果将会被渲染为:

<div class="static active"></div>

普通的class属性会和【v-bind:class】指令的结果合并,而当isActive或者hasError变化的时候,class列表也将被相应地更新。

此外,绑定的数据对象也可以不必内联定义在模板内,提出来也是支持的。

<div v-bind:class="classObject"></div>
data: {
  classObject: {
    active: true,
    'text-danger': false
  }
}

渲染出来的结果和上面是一样的。更多的,我们也可以在这里绑定一个返回对象的计算属性。这是一个常用且强大的模式。

<div v-bind:class="classObject"></div>
data: {
  isActive: true,
  error: null
},
computed: {
  classObject: function () {
    return {
      active: this.isActive && !this.error,
      'text-danger': this.error && this.error.type === 'fatal'
    }
  }
}

这样,classObject会自动随着isActive和error的变化而变化,方便了我们实时切换样式。

绑定class的数组语法

我们可以把一个数组传给【v-bind:class】,以应用一个class列表。

<div v-bind:class="[activeClass, errorClass]"></div>
data: {
  activeClass: 'active',
  errorClass: 'text-danger'
}

以上的结果将被渲染为:

<div class="active text-danger"></div>

在这里可以看得出,数组的语法使用的是键绑定的做法,传一个键的数组,vue会自动将值映射到class中。

另外,绑定class的数组语法也支持条件控制,可以使用三元表达式。

<div v-bind:class="[isActive ? activeClass : '', errorClass]"></div>

不过,这样的语法可读性较低,且当有多个条件class的时候会显得有点繁琐,因此vue还支持在数组的语法中使用对象的语法。

<div v-bind:class="[{ active: isActive }, errorClass]"></div>

这样写和上面的结果是一样的,但是可读性就稍微提高了一丢丢。

绑定class到组件上

当在一个自定义的组件上使用class属性的时候,这些class将会被添加到该组件的根元素上面,这个元素上已经存在的class不会被覆盖,而是会合并。

声明一个组件:

Vue.component('my-component', {
  template: '<p class="foo bar">Hi</p>'
})

然后再使用这个组件的时候给这个组件实例添加一些class:

<my-component class="baz boo"></my-component>

那么这个组件最终会在html中被渲染为:

<p class="foo bar baz boo">Hi</p>

这里要注意的是,只有根元素会继承这些个class,根元素下的子孙元素是不会继承这些个class的。

绑定内联样式的对象语法

【v-bind:style】的对象语法十分直观,因为看起来就非常像css,但它其实是一个javascript对象。css属性名可以用驼峰式(camelCase)或者短横线分隔(kebab-case)来命名。

<div v-bind:style="{ color: activeColor, fontSize: fontSize + 'px' }"></div>
data: {
  activeColor: 'red',
  fontSize: 30
}

内联定义在模板中显然可读性较差,因此直接绑定到一个样式对象通常是更好的做法,会使模板变得更清晰。

<div v-bind:style="styleObject"></div>
data: {
  styleObject: {
    color: 'red',
    fontSize: '13px'
  }
}

同样的,对象语法常常结合返回对象的计算属性使用。

绑定内联样式的数组语法

【v-bind:style】的数组语法可以将多个样式对象应用到同一个元素上。

<div v-bind:style="[baseStyles, overridingStyles]"></div>

绑定的就是键值对对象的数组。

绑定内联样式自动添加前缀

我们知道,一些css属性因为浏览器的兼容性问题,是需要添加浏览器引擎前缀的,比如transform,当我们使用【v-bind:style】指令绑定内联样式的时候,vue也会自动检测并添加相应的前缀。这是vue十分人性化的一点,因为浏览器的兼容性前缀常常是一个令人头疼的问题,重复且冗余。

绑定内联样式的多重值

从2.3.0开始,开发者可以为style绑定中的属性提供一个包含多个值的数组,常用于提供多个带前缀的值。

<div :style="{ display: ['-webkit-box', '-ms-flexbox', 'flex'] }"></div>

这样写的话,vue只会渲染出数组中最后一个被浏览器支持的值,比如在上面的这个例子中,如果浏览器支持不带浏览器前缀的flexbox,那么就只会渲染出display:flex。

 

"我还是很喜欢你,像春风守护着晨曦,不曾远去。"

相关文章: