发表于: 2017-01-14 03:00:36

1 1083


今天完成的事情:完成了自己写的小程序的部分表单验证;学习了层叠上下文;看了些小程序demo的源码;


明天计划的事情:继续做小程序的服务器通信部分;看锋利的jquery七八章;


遇到的问题:

(function(type) {

    pageObject[type] = function(e) {

      var key = type + 'Size'

      var changedData = {}

      changedData[key] =

        this.data[key] === 'default' ? 'mini' : 'default'

        console.log(this)

          this.setData(changedData)

          console.log(this)

    } 

  })(types[i])

两个console为什么结果一样,为什么[]换成.就无法实现功能了,不是应该等效的么


收获:了解了starking context的相关知识

从高到低:

1.正index

2.z-index:auto也可把z-index:0看成一样(但从层叠水平上看,实际上在层叠上下问领域有着本质差别)

3.inline/inline-block水平盒子

4.float浮动盒子

5.block块状水平盒子

6.负z-index

7.background/border


跟着tag看到了page编译的过程 


var types = ['default', 'primary', 'warn']

var pageObject = {

  data: {

    defaultSize: 'default',

    primarySize: 'default',

    warnSize: 'default',

    disabled: false,

    plain: false,

    loading: false

  },

  setDisabled: function(e) {

    this.setData({

      disabled: !this.data.disabled

    })

  },

  setPlain: function(e) {

    this.setData({

      plain: !this.data.plain

    })

  },

  setLoading: function(e) {

    this.setData({

      loading: !this.data.loading

    })

  }

}

for (var i = 0; i < types.length; ++i) {

  (function(type) {

    pageObject[type] = function(e) {

      var key = type + 'Size'

      var changedData = {}

      changedData[key] =

        this.data[key]=== 'default' ? 'mini' : 'default'

          this.setData(changedData)

    } 

  })(types[i])

}

Page(pageObject)


这个函数,在初始时,自执行了动态添加pageObeject对象的types.length个名为types中每个元素的函数属性,点击时触发不同的函数,创建不同的changedData对象,通过三元来实现changedData[key]中的状态切换,通过setData把这个changedData对象作为键值来改变this也就是pageObject[type]中的对应的属性来达到改变button样式的效果。

三元表达式写两个状态的状态机很方便,自执行函数原来可以这样迭代参数,动态添加好6,同样的效果别人实现的好酷炫。断点调试时,鼠标悬停可以看到每一步各个对象的内部,很方便。


返回列表 返回列表
评论

    分享到