You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@weex.apache.org by so...@apache.org on 2017/04/01 06:03:22 UTC

[17/50] [abbrv] incubator-weex git commit: * [ios] update bundle js in ios playground.

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/61ab9f49/ios/playground/bundlejs/component/lengthunitwx-demo.js
----------------------------------------------------------------------
diff --git a/ios/playground/bundlejs/component/lengthunitwx-demo.js b/ios/playground/bundlejs/component/lengthunitwx-demo.js
new file mode 100644
index 0000000..eabc4ec
--- /dev/null
+++ b/ios/playground/bundlejs/component/lengthunitwx-demo.js
@@ -0,0 +1,329 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId])
+/******/ 			return installedModules[moduleId].exports;
+
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			exports: {},
+/******/ 			id: moduleId,
+/******/ 			loaded: false
+/******/ 		};
+
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ 		// Flag the module as loaded
+/******/ 		module.loaded = true;
+
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+
+
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "";
+
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 0:
+/***/ function(module, exports, __webpack_require__) {
+
+	var __weex_template__ = __webpack_require__(97)
+	var __weex_style__ = __webpack_require__(98)
+	var __weex_script__ = __webpack_require__(99)
+
+	__weex_define__('@weex-component/1cedab9e17186432a3ad57749557d3a0', [], function(__weex_require__, __weex_exports__, __weex_module__) {
+
+	    __weex_script__(__weex_module__, __weex_exports__, __weex_require__)
+	    if (__weex_exports__.__esModule && __weex_exports__.default) {
+	      __weex_module__.exports = __weex_exports__.default
+	    }
+
+	    __weex_module__.exports.template = __weex_template__
+
+	    __weex_module__.exports.style = __weex_style__
+
+	})
+
+	__weex_bootstrap__('@weex-component/1cedab9e17186432a3ad57749557d3a0',undefined,undefined)
+
+/***/ },
+
+/***/ 34:
+/***/ function(module, exports) {
+
+	var core = module.exports = {version: '2.4.0'};
+	if(typeof __e == 'number')__e = core; // eslint-disable-line no-undef
+
+/***/ },
+
+/***/ 97:
+/***/ function(module, exports) {
+
+	module.exports = {
+	  "type": "div",
+	  "children": [
+	    {
+	      "type": "text",
+	      "style": {
+	        "fontSize": 20,
+	        "backgroundColor": "#ff0000",
+	        "marginTop": 10,
+	        "width": 100
+	      },
+	      "attr": {
+	        "value": "width:100"
+	      }
+	    },
+	    {
+	      "type": "text",
+	      "style": {
+	        "fontSize": 20,
+	        "backgroundColor": "#ff0000",
+	        "marginTop": 10,
+	        "width": 200
+	      },
+	      "attr": {
+	        "value": "width:200"
+	      }
+	    },
+	    {
+	      "type": "text",
+	      "style": {
+	        "fontSize": 20,
+	        "backgroundColor": "#ff0000",
+	        "marginTop": 10,
+	        "width": 300
+	      },
+	      "attr": {
+	        "value": "width:300"
+	      }
+	    },
+	    {
+	      "type": "text",
+	      "style": {
+	        "fontSize": 20,
+	        "backgroundColor": "#ff0000",
+	        "marginTop": 10,
+	        "width": 400
+	      },
+	      "attr": {
+	        "value": "width:400"
+	      }
+	    },
+	    {
+	      "type": "text",
+	      "style": {
+	        "fontSize": 20,
+	        "backgroundColor": "#ff0000",
+	        "marginTop": 10,
+	        "width": 700
+	      },
+	      "attr": {
+	        "value": "width:700"
+	      }
+	    },
+	    {
+	      "type": "text",
+	      "style": {
+	        "fontSize": 20,
+	        "backgroundColor": "#ff0000",
+	        "marginTop": 10,
+	        "width": 750
+	      },
+	      "attr": {
+	        "value": "width:750"
+	      }
+	    },
+	    {
+	      "type": "text",
+	      "style": {
+	        "fontSize": 20,
+	        "backgroundColor": "#ff0000",
+	        "marginTop": 10,
+	        "width": "50wx"
+	      },
+	      "attr": {
+	        "value": "width:50wx"
+	      }
+	    },
+	    {
+	      "type": "text",
+	      "style": {
+	        "fontSize": 20,
+	        "backgroundColor": "#ff0000",
+	        "marginTop": 10,
+	        "width": "100wx"
+	      },
+	      "attr": {
+	        "value": "width:100wx"
+	      }
+	    },
+	    {
+	      "type": "text",
+	      "style": {
+	        "fontSize": 20,
+	        "backgroundColor": "#ff0000",
+	        "marginTop": 10,
+	        "width": "200wx"
+	      },
+	      "attr": {
+	        "value": "width:200wx"
+	      }
+	    },
+	    {
+	      "type": "text",
+	      "style": {
+	        "fontSize": 20,
+	        "backgroundColor": "#ff0000",
+	        "marginTop": 10,
+	        "width": "300wx"
+	      },
+	      "attr": {
+	        "value": "width:300wx"
+	      }
+	    },
+	    {
+	      "type": "text",
+	      "style": {
+	        "fontSize": 20,
+	        "backgroundColor": "#ff0000",
+	        "marginTop": 10,
+	        "width": "320wx"
+	      },
+	      "attr": {
+	        "value": "width:320wx"
+	      }
+	    },
+	    {
+	      "type": "text",
+	      "style": {
+	        "fontSize": 20,
+	        "backgroundColor": "#ff0000",
+	        "marginTop": 10,
+	        "width": "360wx"
+	      },
+	      "attr": {
+	        "value": "width:360wx"
+	      }
+	    },
+	    {
+	      "type": "text",
+	      "style": {
+	        "fontSize": 20,
+	        "backgroundColor": "#ff0000",
+	        "marginTop": 10,
+	        "width": "375wx"
+	      },
+	      "attr": {
+	        "value": "width:375wx"
+	      }
+	    },
+	    {
+	      "type": "text",
+	      "id": "theText",
+	      "classList": [
+	        "unitwx"
+	      ],
+	      "attr": {
+	        "value": "hello world"
+	      }
+	    }
+	  ]
+	}
+
+/***/ },
+
+/***/ 98:
+/***/ function(module, exports) {
+
+	module.exports = {
+	  "unitwx": {
+	    "width": "200wx",
+	    "height": "130wx",
+	    "marginTop": 80,
+	    "backgroundColor": "#00ff00",
+	    "color": "#FFFFFF"
+	  }
+	}
+
+/***/ },
+
+/***/ 99:
+/***/ function(module, exports, __webpack_require__) {
+
+	module.exports = function(module, exports, __weex_require__){'use strict';
+
+	var _stringify = __webpack_require__(100);
+
+	var _stringify2 = _interopRequireDefault(_stringify);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	module.exports = {
+	  data: function () {return {
+	    theWidth: 100
+	  }},
+	  methods: {
+	    ready: function ready() {
+	      console.log('in ready ' + (0, _stringify2.default)(WXEnvironment));
+
+	      var me = this;
+	      setTimeout(function () {
+	        me.theWidth = 200;
+	      }, 2000);
+
+	      setTimeout(function () {
+	        me.theWidth = '200wx';
+	      }, 4000);
+	    },
+
+	    setTo200: function setTo200() {
+	      this.theWidth = '200';
+	    },
+	    setTo200wx: function setTo200wx() {
+	      this.theWidth = '200wx';
+	    }
+	  }
+	};}
+	/* generated by weex-loader */
+
+
+/***/ },
+
+/***/ 100:
+/***/ function(module, exports, __webpack_require__) {
+
+	module.exports = { "default": __webpack_require__(101), __esModule: true };
+
+/***/ },
+
+/***/ 101:
+/***/ function(module, exports, __webpack_require__) {
+
+	var core  = __webpack_require__(34)
+	  , $JSON = core.JSON || (core.JSON = {stringify: JSON.stringify});
+	module.exports = function stringify(it){ // eslint-disable-line no-unused-vars
+	  return $JSON.stringify.apply($JSON, arguments);
+	};
+
+/***/ }
+
+/******/ });
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/61ab9f49/ios/playground/bundlejs/component/list/list-basic.js
----------------------------------------------------------------------
diff --git a/ios/playground/bundlejs/component/list/list-basic.js b/ios/playground/bundlejs/component/list/list-basic.js
index f059d98..174c140 100644
--- a/ios/playground/bundlejs/component/list/list-basic.js
+++ b/ios/playground/bundlejs/component/list/list-basic.js
@@ -45,9 +45,9 @@
 /***/ 0:
 /***/ function(module, exports, __webpack_require__) {
 
-	var __weex_template__ = __webpack_require__(97)
-	var __weex_style__ = __webpack_require__(98)
-	var __weex_script__ = __webpack_require__(99)
+	var __weex_template__ = __webpack_require__(102)
+	var __weex_style__ = __webpack_require__(103)
+	var __weex_script__ = __webpack_require__(104)
 
 	__weex_define__('@weex-component/e4cde146096cc51ec5ab930a518ea157', [], function(__weex_require__, __weex_exports__, __weex_module__) {
 
@@ -66,17 +66,97 @@
 
 /***/ },
 
-/***/ 97:
+/***/ 34:
+/***/ function(module, exports) {
+
+	var core = module.exports = {version: '2.4.0'};
+	if(typeof __e == 'number')__e = core; // eslint-disable-line no-undef
+
+/***/ },
+
+/***/ 100:
+/***/ function(module, exports, __webpack_require__) {
+
+	module.exports = { "default": __webpack_require__(101), __esModule: true };
+
+/***/ },
+
+/***/ 101:
+/***/ function(module, exports, __webpack_require__) {
+
+	var core  = __webpack_require__(34)
+	  , $JSON = core.JSON || (core.JSON = {stringify: JSON.stringify});
+	module.exports = function stringify(it){ // eslint-disable-line no-unused-vars
+	  return $JSON.stringify.apply($JSON, arguments);
+	};
+
+/***/ },
+
+/***/ 102:
 /***/ function(module, exports) {
 
 	module.exports = {
 	  "type": "div",
 	  "children": [
 	    {
+	      "type": "div",
+	      "style": {
+	        "backgroundColor": "#eeeeee"
+	      },
+	      "children": [
+	        {
+	          "type": "text",
+	          "classList": [
+	            "count"
+	          ],
+	          "attr": {
+	            "value": function () {return 'Appear items:' + (this.appearMin) + ' - ' + (this.appearMax)}
+	          }
+	        },
+	        {
+	          "type": "div",
+	          "style": {
+	            "height": 20,
+	            "width": 750,
+	            "borderColor": "#000000",
+	            "borderWidth": 2,
+	            "justifyContent": "center"
+	          },
+	          "children": [
+	            {
+	              "type": "div",
+	              "style": {
+	                "height": 14,
+	                "width": function () {return this.progress_width},
+	                "marginLeft": function () {return this.progress},
+	                "backgroundColor": "#808080"
+	              }
+	            }
+	          ]
+	        },
+	        {
+	          "type": "text",
+	          "style": {
+	            "width": 750
+	          },
+	          "attr": {
+	            "value": function () {return this.event}
+	          }
+	        }
+	      ]
+	    },
+	    {
 	      "type": "list",
+	      "id": "list",
 	      "classList": [
 	        "list"
 	      ],
+	      "events": {
+	        "scroll": "onScroll"
+	      },
+	      "attr": {
+	        "offsetAccuracy": "5"
+	      },
 	      "children": [
 	        {
 	          "type": "refresh",
@@ -167,22 +247,13 @@
 	          ]
 	        }
 	      ]
-	    },
-	    {
-	      "type": "text",
-	      "classList": [
-	        "count"
-	      ],
-	      "attr": {
-	        "value": function () {return 'Appear items:' + (this.appearMin) + ' - ' + (this.appearMax)}
-	      }
 	    }
 	  ]
 	}
 
 /***/ },
 
-/***/ 98:
+/***/ 103:
 /***/ function(module, exports) {
 
 	module.exports = {
@@ -210,7 +281,8 @@
 	    "borderBottomWidth": 2,
 	    "borderBottomColor": "#c0c0c0",
 	    "height": 100,
-	    "padding": 20
+	    "padding": 20,
+	    "backgroundColor:active": "#00BFFF"
 	  },
 	  "refresh-view": {
 	    "width": 750,
@@ -234,11 +306,19 @@
 
 /***/ },
 
-/***/ 99:
-/***/ function(module, exports) {
+/***/ 104:
+/***/ function(module, exports, __webpack_require__) {
 
 	module.exports = function(module, exports, __weex_require__){'use strict';
 
+	var _stringify = __webpack_require__(100);
+
+	var _stringify2 = _interopRequireDefault(_stringify);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	var dom = weex.requireModule('dom');
+	var isFirst = true;
 	module.exports = {
 	  methods: {
 	    onappear: function onappear(e) {
@@ -291,9 +371,27 @@
 	        }
 	        self.loading_display = 'hide';
 	      }, 3000);
+	    },
+
+	    onScroll: function onScroll(e) {
+	      var self = this;
+	      this.event = 'contentOffset: ' + (0, _stringify2.default)(e.contentOffset) + '\ncontentSize: ' + (0, _stringify2.default)(e.contentSize);
+	      dom.getComponentRect(this.$el('list'), function (ret) {
+	        if (e.contentOffset.x == 0 && e.contentOffset.y == 0 && isFirst) {
+	          isFirst = false;
+	          return;
+	        }
+	        var listHeight = ret.size.height;
+	        self.progress_width = listHeight / e.contentSize.height * 750;
+	        var offsetY = e.contentOffset.y > 0 ? 0 : Math.abs(e.contentOffset.y);
+	        self.progress = offsetY / (e.contentSize.height - listHeight) * (750 - self.progress_width);
+	      });
 	    }
 	  },
 	  data: function () {return {
+	    progress_width: 0,
+	    progress: 0,
+	    event: '-',
 	    refresh_display: 'hide',
 	    loading_display: 'hide',
 	    appearMin: 1,

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/61ab9f49/ios/playground/bundlejs/component/list/list-demo-horizon.js
----------------------------------------------------------------------
diff --git a/ios/playground/bundlejs/component/list/list-demo-horizon.js b/ios/playground/bundlejs/component/list/list-demo-horizon.js
index ab83a04..056d26d 100644
--- a/ios/playground/bundlejs/component/list/list-demo-horizon.js
+++ b/ios/playground/bundlejs/component/list/list-demo-horizon.js
@@ -45,9 +45,9 @@
 /***/ 0:
 /***/ function(module, exports, __webpack_require__) {
 
-	var __weex_template__ = __webpack_require__(103)
-	var __weex_style__ = __webpack_require__(104)
-	var __weex_script__ = __webpack_require__(105)
+	var __weex_template__ = __webpack_require__(108)
+	var __weex_style__ = __webpack_require__(109)
+	var __weex_script__ = __webpack_require__(110)
 
 	__weex_define__('@weex-component/a089a89d3221f94935162af3aa4db1af', [], function(__weex_require__, __weex_exports__, __weex_module__) {
 
@@ -66,7 +66,7 @@
 
 /***/ },
 
-/***/ 103:
+/***/ 108:
 /***/ function(module, exports) {
 
 	module.exports = {
@@ -853,7 +853,7 @@
 
 /***/ },
 
-/***/ 104:
+/***/ 109:
 /***/ function(module, exports) {
 
 	module.exports = {
@@ -929,7 +929,7 @@
 
 /***/ },
 
-/***/ 105:
+/***/ 110:
 /***/ function(module, exports) {
 
 	module.exports = function(module, exports, __weex_require__){'use strict';

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/61ab9f49/ios/playground/bundlejs/component/list/list-demo.js
----------------------------------------------------------------------
diff --git a/ios/playground/bundlejs/component/list/list-demo.js b/ios/playground/bundlejs/component/list/list-demo.js
index af38db0..559552a 100644
--- a/ios/playground/bundlejs/component/list/list-demo.js
+++ b/ios/playground/bundlejs/component/list/list-demo.js
@@ -45,9 +45,9 @@
 /***/ 0:
 /***/ function(module, exports, __webpack_require__) {
 
-	var __weex_template__ = __webpack_require__(100)
-	var __weex_style__ = __webpack_require__(101)
-	var __weex_script__ = __webpack_require__(102)
+	var __weex_template__ = __webpack_require__(105)
+	var __weex_style__ = __webpack_require__(106)
+	var __weex_script__ = __webpack_require__(107)
 
 	__weex_define__('@weex-component/3226d5b3a8f5b1ae43875db22de0785e', [], function(__weex_require__, __weex_exports__, __weex_module__) {
 
@@ -66,7 +66,7 @@
 
 /***/ },
 
-/***/ 100:
+/***/ 105:
 /***/ function(module, exports) {
 
 	module.exports = {
@@ -810,7 +810,7 @@
 
 /***/ },
 
-/***/ 101:
+/***/ 106:
 /***/ function(module, exports) {
 
 	module.exports = {
@@ -888,7 +888,7 @@
 
 /***/ },
 
-/***/ 102:
+/***/ 107:
 /***/ function(module, exports) {
 
 	module.exports = function(module, exports, __weex_require__){'use strict';

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/61ab9f49/ios/playground/bundlejs/component/list/waterfall.js
----------------------------------------------------------------------
diff --git a/ios/playground/bundlejs/component/list/waterfall.js b/ios/playground/bundlejs/component/list/waterfall.js
new file mode 100644
index 0000000..9cfa83b
--- /dev/null
+++ b/ios/playground/bundlejs/component/list/waterfall.js
@@ -0,0 +1,877 @@
+// { "framework": "Vue" }
+
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId])
+/******/ 			return installedModules[moduleId].exports;
+
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			exports: {},
+/******/ 			id: moduleId,
+/******/ 			loaded: false
+/******/ 		};
+
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ 		// Flag the module as loaded
+/******/ 		module.loaded = true;
+
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+
+
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "";
+
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 0:
+/***/ function(module, exports, __webpack_require__) {
+
+	var __vue_exports__, __vue_options__
+	var __vue_styles__ = []
+
+	/* styles */
+	__vue_styles__.push(__webpack_require__(464)
+	)
+
+	/* script */
+	__vue_exports__ = __webpack_require__(465)
+
+	/* template */
+	var __vue_template__ = __webpack_require__(466)
+	__vue_options__ = __vue_exports__ = __vue_exports__ || {}
+	if (
+	  typeof __vue_exports__.default === "object" ||
+	  typeof __vue_exports__.default === "function"
+	) {
+	if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
+	__vue_options__ = __vue_exports__ = __vue_exports__.default
+	}
+	if (typeof __vue_options__ === "function") {
+	  __vue_options__ = __vue_options__.options
+	}
+	__vue_options__.__file = "/Users/admin/Workspace/incubator-weex/examples/vue/components/waterfall.vue"
+	__vue_options__.render = __vue_template__.render
+	__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
+	__vue_options__._scopeId = "data-v-388ea278"
+	__vue_options__.style = __vue_options__.style || {}
+	__vue_styles__.forEach(function (module) {
+	  for (var name in module) {
+	    __vue_options__.style[name] = module[name]
+	  }
+	})
+	if (typeof __register_static_styles__ === "function") {
+	  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
+	}
+
+	module.exports = __vue_exports__
+	module.exports.el = 'true'
+	new Vue(module.exports)
+
+
+/***/ },
+
+/***/ 464:
+/***/ function(module, exports) {
+
+	module.exports = {
+	  "page": {
+	    "backgroundColor": "#EFEFEF"
+	  },
+	  "refresh": {
+	    "height": 128,
+	    "width": 750,
+	    "flexDirection": "row",
+	    "alignItems": "center",
+	    "justifyContent": "center"
+	  },
+	  "refreshText": {
+	    "color": "#888888",
+	    "fontWeight": "bold"
+	  },
+	  "indicator": {
+	    "color": "#888888",
+	    "height": 40,
+	    "width": 40,
+	    "marginRight": 30
+	  },
+	  "banner": {
+	    "height": 377,
+	    "flexDirection": "row"
+	  },
+	  "bannerInfo": {
+	    "width": 270,
+	    "alignItems": "center",
+	    "justifyContent": "center"
+	  },
+	  "avatar": {
+	    "width": 148,
+	    "height": 108,
+	    "borderRadius": 54,
+	    "borderWidth": 4,
+	    "borderColor": "#FFFFFF",
+	    "marginBottom": 14
+	  },
+	  "name": {
+	    "fontWeight": "bold",
+	    "fontSize": 32,
+	    "color": "#ffffff",
+	    "lineHeight": 32,
+	    "textAlign": "center",
+	    "marginBottom": 16
+	  },
+	  "titleWrap": {
+	    "width": 100,
+	    "height": 24,
+	    "marginBottom": 10,
+	    "backgroundColor": "rgba(255,255,255,0.8)",
+	    "borderRadius": 12,
+	    "justifyContent": "center",
+	    "alignItems": "center"
+	  },
+	  "title": {
+	    "fontSize": 20,
+	    "color": "#000000"
+	  },
+	  "bannerPhotoWrap": {
+	    "width": 449,
+	    "height": 305,
+	    "backgroundColor": "#FFFFFF",
+	    "borderRadius": 12,
+	    "marginTop": 35,
+	    "padding": 12,
+	    "flexDirection": "row",
+	    "justifyContent": "space-between",
+	    "flexWrap": "wrap"
+	  },
+	  "bannerPhoto": {
+	    "width": 137,
+	    "height": 137,
+	    "marginBottom": 6
+	  },
+	  "stickyHeader": {
+	    "position": "sticky",
+	    "height": 94,
+	    "flexDirection": "row",
+	    "paddingBottom": 6
+	  },
+	  "stickyWrapper": {
+	    "flexDirection": "row",
+	    "backgroundColor": "#00cc99",
+	    "justifyContent": "center",
+	    "alignItems": "center",
+	    "flex": 1
+	  },
+	  "stickyTextImageWrapper": {
+	    "flex": 1,
+	    "justifyContent": "center",
+	    "alignItems": "center",
+	    "flexDirection": "row"
+	  },
+	  "stickyText": {
+	    "color": "#FFFFFF",
+	    "fontWeight": "bold",
+	    "fontSize": 32,
+	    "marginRight": 12
+	  },
+	  "stickyImage": {
+	    "width": 64,
+	    "height": 64,
+	    "borderRadius": 32
+	  },
+	  "cell": {
+	    "paddingTop": 6,
+	    "paddingBottom": 6
+	  },
+	  "item": {
+	    "backgroundColor": "#FFFFFF",
+	    "alignItems": "center"
+	  },
+	  "itemName": {
+	    "fontSize": 28,
+	    "color": "#333333",
+	    "lineHeight": 42,
+	    "textAlign": "left",
+	    "marginTop": 24
+	  },
+	  "itemPhoto": {
+	    "marginTop": 18,
+	    "width": 220,
+	    "height": 220,
+	    "marginBottom": 18
+	  },
+	  "itemDesc": {
+	    "fontSize": 24,
+	    "margin": 12,
+	    "color": "#999999",
+	    "lineHeight": 36,
+	    "textAlign": "left"
+	  },
+	  "itemClickBehaviour": {
+	    "fontSize": 36,
+	    "color": "#00cc99",
+	    "lineHeight": 36,
+	    "textAlign": "center",
+	    "marginTop": 6,
+	    "marginLeft": 24,
+	    "marginRight": 24,
+	    "marginBottom": 30
+	  },
+	  "footer": {
+	    "height": 94,
+	    "justifyContent": "center",
+	    "alignItems": "center",
+	    "backgroundColor": "#00cc99"
+	  },
+	  "fixedItem": {
+	    "position": "fixed",
+	    "width": 78,
+	    "height": 78,
+	    "backgroundColor": "#00cc99",
+	    "right": 32,
+	    "bottom": 32,
+	    "borderRadius": 39,
+	    "alignItems": "center",
+	    "justifyContent": "center"
+	  },
+	  "fixedText": {
+	    "fontSize": 36,
+	    "color": "#FFFFFF",
+	    "lineHeight": 36
+	  }
+	}
+
+/***/ },
+
+/***/ 465:
+/***/ function(module, exports) {
+
+	'use strict';
+
+	Object.defineProperty(exports, "__esModule", {
+	  value: true
+	});
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+	//
+
+	exports.default = {
+	  data: function data() {
+	    var items = [{
+	      src: 'https://gw.alicdn.com/tps/TB1Jl1CPFXXXXcJXXXXXXXXXXXX-370-370.jpg',
+	      name: 'Thomas Carlyle',
+	      desc: 'Genius only means hard-working all one\'s life',
+	      behaviourName: 'Change count',
+	      behaviour: 'changeColumnCount'
+	    }, {
+	      src: 'https://gw.alicdn.com/tps/TB1Hv1JPFXXXXa3XXXXXXXXXXXX-370-370.jpg',
+	      desc: 'The man who has made up his mind to win will never say "impossible "',
+	      behaviourName: 'Change gap',
+	      behaviour: 'changeColumnGap'
+	    }, {
+	      src: 'https://gw.alicdn.com/tps/TB1eNKuPFXXXXc_XpXXXXXXXXXX-370-370.jpg',
+	      desc: 'There is no such thing as a great talent without great will - power',
+	      behaviourName: 'Show scrollbar',
+	      behaviour: 'showScrollbar'
+	    }, {
+	      src: 'https://gw.alicdn.com/tps/TB1DCh8PFXXXXX7aXXXXXXXXXXX-370-370.jpg',
+	      name: 'Addison',
+	      desc: 'Cease to struggle and you cease to live',
+	      behaviourName: 'Change width',
+	      behaviour: 'changeColumnWidth'
+	    }, {
+	      src: 'https://gw.alicdn.com/tps/TB1ACygPFXXXXXwXVXXXXXXXXXX-370-370.jpg',
+	      desc: 'A strong man will struggle with the storms of fate',
+	      behaviourName: 'Listen appear',
+	      behaviour: 'listenAppear'
+	    }, {
+	      src: 'https://gw.alicdn.com/tps/TB1IGShPFXXXXaqXVXXXXXXXXXX-370-370.jpg',
+	      name: 'Ruskin',
+	      desc: 'Living without an aim is like sailing without a compass',
+	      behaviourName: 'Set scrollable',
+	      behaviour: 'setScrollable'
+	    }, {
+	      src: 'https://gw.alicdn.com/tps/TB1xU93PFXXXXXHaXXXXXXXXXXX-240-240.jpg',
+	      behaviourName: 'waterfall padding',
+	      behaviour: 'setPadding'
+	    }, {
+	      src: 'https://gw.alicdn.com/tps/TB19hu0PFXXXXaXaXXXXXXXXXXX-240-240.jpg',
+	      name: 'Balzac',
+	      desc: 'There is no such thing as a great talent without great will - power',
+	      behaviourName: 'listen scroll',
+	      behaviour: 'listenScroll'
+	    }, {
+	      src: 'https://gw.alicdn.com/tps/TB1ux2vPFXXXXbkXXXXXXXXXXXX-240-240.jpg',
+	      behaviourName: 'Remove cell',
+	      behaviour: 'removeCell'
+	    }, {
+	      src: 'https://gw.alicdn.com/tps/TB1tCCWPFXXXXa7aXXXXXXXXXXX-240-240.jpg',
+	      behaviourName: 'Move cell',
+	      behaviour: 'moveCell'
+	    }];
+
+	    var repeatItems = [];
+	    for (var i = 0; i < 3; i++) {
+	      repeatItems.push.apply(repeatItems, items);
+	    }
+
+	    return {
+	      padding: 0,
+	      refreshing: false,
+	      refreshText: '\u2193   pull to refresh...',
+	      columnCount: 2,
+	      columnGap: 12,
+	      columnWidth: 'auto',
+	      contentOffset: '0',
+	      showHeader: true,
+	      showScrollbar: false,
+	      scrollable: true,
+	      showStickyHeader: false,
+	      appearImage: null,
+	      disappearImage: null,
+	      stickyHeaderType: 'none',
+	      banner: {
+	        photos: [{ src: 'https://gw.alicdn.com/tps/TB1JyaCPFXXXXc9XXXXXXXXXXXX-140-140.jpg' }, { src: 'https://gw.alicdn.com/tps/TB1MwSFPFXXXXbdXXXXXXXXXXXX-140-140.jpg' }, { src: 'https://gw.alicdn.com/tps/TB1U8avPFXXXXaDXpXXXXXXXXXX-140-140.jpg' }, { src: 'https://gw.alicdn.com/tps/TB17Xh8PFXXXXbkaXXXXXXXXXXX-140-140.jpg' }, { src: 'https://gw.alicdn.com/tps/TB1cTmLPFXXXXXRXXXXXXXXXXXX-140-140.jpg' }, { src: 'https://gw.alicdn.com/tps/TB1oCefPFXXXXbVXVXXXXXXXXXX-140-140.jpg' }]
+	      },
+	      items: repeatItems
+	    };
+	  },
+
+	  methods: {
+	    recylerScroll: function recylerScroll(e) {
+	      this.contentOffset = e.contentOffset.y;
+	    },
+	    loadmore: function loadmore(e) {
+	      console.log('receive loadmore event');
+	      // this.$refs.waterfall.resetLoadmore()
+	    },
+	    showOrRemoveHeader: function showOrRemoveHeader() {
+	      this.showHeader = !this.showHeader;
+	    },
+	    onItemclick: function onItemclick(behaviour, index) {
+	      console.log('click...' + behaviour + ' at index ' + index);
+	      switch (behaviour) {
+	        case 'changeColumnCount':
+	          this.changeColumnCount();
+	          break;
+	        case 'changeColumnGap':
+	          this.changeColumnGap();
+	          break;
+	        case 'changeColumnWidth':
+	          this.changeColumnWidth();
+	          break;
+	        case 'showScrollbar':
+	          this.showOrHideScrollbar();
+	          break;
+	        case 'listenAppear':
+	          this.listenAppearAndDisappear();
+	          break;
+	        case 'setScrollable':
+	          this.setScrollable();
+	          break;
+	        case 'setPadding':
+	          this.setRecyclerPadding();
+	          break;
+	        case 'listenScroll':
+	          this.listenScrollEvent();
+	          break;
+	        case 'removeCell':
+	          this.removeCell(index);
+	          break;
+	        case 'moveCell':
+	          this.moveCell(index);
+	          break;
+	      }
+	    },
+
+	    itemAppear: function itemAppear(src) {
+	      this.appearImage = src;
+	    },
+
+	    itemDisappear: function itemDisappear(src) {
+	      this.disappearImage = src;
+	    },
+
+	    changeColumnCount: function changeColumnCount() {
+	      if (this.columnCount === 2) {
+	        this.columnCount = 3;
+	      } else {
+	        this.columnCount = 2;
+	      }
+	    },
+
+	    changeColumnGap: function changeColumnGap() {
+	      if (this.columnGap === 12) {
+	        this.columnGap = 'normal';
+	      } else {
+	        this.columnGap = 12;
+	      }
+	    },
+
+	    changeColumnWidth: function changeColumnWidth() {
+	      if (this.columnWidth === 'auto') {
+	        this.columnWidth = 600;
+	      } else {
+	        this.columnWidth = 'auto';
+	      }
+	    },
+
+	    showOrHideScrollbar: function showOrHideScrollbar() {
+	      this.showScrollbar = !this.showScrollbar;
+	    },
+
+	    setScrollable: function setScrollable() {
+	      this.scrollable = !this.scrollable;
+	    },
+
+	    listenAppearAndDisappear: function listenAppearAndDisappear() {
+	      this.stickyHeaderType = this.stickyHeaderType === 'appear' ? 'none' : 'appear';
+	    },
+
+	    listenScrollEvent: function listenScrollEvent() {
+	      this.stickyHeaderType = this.stickyHeaderType === 'scroll' ? 'none' : 'scroll';
+	    },
+
+	    scrollToTop: function scrollToTop() {
+	      weex.requireModule('dom').scrollToElement(this.$refs.header);
+	    },
+
+	    setRecyclerPadding: function setRecyclerPadding() {
+	      this.padding = this.padding == 0 ? 12 : 0;
+	    },
+
+	    removeCell: function removeCell(index) {
+	      this.items.splice(index, 1);
+	    },
+
+	    moveCell: function moveCell(index) {
+	      if (index == 0) {
+	        this.items.splice(this.items.length - 1, 0, this.items.splice(index, 1)[0]);
+	      } else {
+	        this.items.splice(0, 0, this.items.splice(index, 1)[0]);
+	      }
+	    },
+
+	    onrefresh: function onrefresh(event) {
+	      var _this = this;
+
+	      this.refreshing = true;
+	      this.refreshText = "loading...";
+	      setTimeout(function () {
+	        _this.refreshing = false;
+	        _this.refreshText = '\u2193   pull to refresh...';
+	      }, 2000);
+	    },
+	    onpullingdown: function onpullingdown(event) {
+	      // console.log(`${event.pullingDistance}`)
+	      if (event.pullingDistance < -64) {
+	        this.refreshText = '\u2191   release to refresh...';
+	      } else {
+	        this.refreshText = '\u2193   pull to refresh...';
+	      }
+	    }
+	  }
+	};
+
+/***/ },
+
+/***/ 466:
+/***/ function(module, exports) {
+
+	module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
+	  return _c('waterfall', {
+	    ref: "waterfall",
+	    staticClass: ["page"],
+	    style: {
+	      padding: _vm.padding
+	    },
+	    attrs: {
+	      "columnWidth": _vm.columnWidth,
+	      "columnCount": _vm.columnCount,
+	      "columnGap": _vm.columnGap,
+	      "showScrollbar": _vm.showScrollbar,
+	      "scrollable": _vm.scrollable,
+	      "loadmoreoffset": "3000"
+	    },
+	    on: {
+	      "scroll": _vm.recylerScroll,
+	      "loadmore": _vm.loadmore
+	    }
+	  }, [_c('refresh', {
+	    staticClass: ["refresh"],
+	    attrs: {
+	      "display": _vm.refreshing ? 'show' : 'hide'
+	    },
+	    on: {
+	      "refresh": _vm.onrefresh,
+	      "pullingdown": _vm.onpullingdown
+	    }
+	  }, [_c('loading-indicator', {
+	    staticClass: ["indicator"]
+	  }), _c('text', {
+	    staticClass: ["refreshText"]
+	  }, [_vm._v(_vm._s(_vm.refreshText))])], 1), (_vm.showHeader) ? _c('header', {
+	    ref: "header",
+	    staticClass: ["header"]
+	  }, [_c('image', {
+	    staticClass: ["banner"],
+	    attrs: {
+	      "src": "https://gw.alicdn.com/tps/TB1ESN1PFXXXXX1apXXXXXXXXXX-1000-600.jpg",
+	      "resize": "cover"
+	    }
+	  }, [_c('div', {
+	    staticClass: ["bannerInfo"]
+	  }, [_c('image', {
+	    staticClass: ["avatar"],
+	    attrs: {
+	      "src": "https://gw.alicdn.com/tps/TB1EP9bPFXXXXbpXVXXXXXXXXXX-150-110.jpg",
+	      "resize": "cover"
+	    }
+	  }), _c('text', {
+	    staticClass: ["name"]
+	  }, [_vm._v("Adam Cat")]), _c('div', {
+	    staticClass: ["titleWrap"]
+	  }, [_c('text', {
+	    staticClass: ["title"]
+	  }, [_vm._v("Genius")])])]), _c('div', {
+	    staticClass: ["bannerPhotoWrap"]
+	  }, _vm._l((_vm.banner.photos), function(photo) {
+	    return _c('image', {
+	      staticClass: ["bannerPhoto"],
+	      attrs: {
+	        "src": photo.src
+	      }
+	    })
+	  }))])]) : _vm._e(), _c('header', {
+	    staticClass: ["stickyHeader"],
+	    on: {
+	      "click": _vm.showOrRemoveHeader
+	    }
+	  }, [(_vm.stickyHeaderType === 'none') ? _c('div', {
+	    staticClass: ["stickyWrapper"]
+	  }, [_c('text', {
+	    staticClass: ["stickyText"]
+	  }, [_vm._v("Sticky Header")])]) : _vm._e(), (_vm.stickyHeaderType === 'appear') ? _c('div', {
+	    staticClass: ["stickyWrapper"]
+	  }, [_c('div', {
+	    staticClass: ["stickyTextImageWrapper"]
+	  }, [_c('text', {
+	    staticClass: ["stickyText"]
+	  }, [_vm._v("Last Appear:")]), _c('image', {
+	    staticClass: ["stickyImage"],
+	    attrs: {
+	      "src": _vm.appearImage
+	    }
+	  })]), _c('div', {
+	    staticClass: ["stickyTextImageWrapper"]
+	  }, [_c('text', {
+	    staticClass: ["stickyText"]
+	  }, [_vm._v("Last Disappear:")]), _c('image', {
+	    staticClass: ["stickyImage"],
+	    attrs: {
+	      "src": _vm.disappearImage
+	    }
+	  })])]) : _vm._e(), (_vm.stickyHeaderType === 'scroll') ? _c('div', {
+	    staticClass: ["stickyWrapper"]
+	  }, [_c('text', {
+	    staticClass: ["stickyText"]
+	  }, [_vm._v("Content Offset:" + _vm._s(_vm.contentOffset))])]) : _vm._e()]), _vm._l((_vm.items), function(item, index) {
+	    return _c('cell', {
+	      key: item.src,
+	      staticClass: ["cell"],
+	      appendAsTree: true,
+	      attrs: {
+	        "append": "tree"
+	      }
+	    }, [_c('div', {
+	      staticClass: ["item"],
+	      on: {
+	        "click": function($event) {
+	          _vm.onItemclick(item.behaviour, index)
+	        },
+	        "appear": function($event) {
+	          _vm.itemAppear(item.src)
+	        },
+	        "disappear": function($event) {
+	          _vm.itemDisappear(item.src)
+	        }
+	      }
+	    }, [(item.name) ? _c('text', {
+	      staticClass: ["itemName"]
+	    }, [_vm._v(_vm._s(item.name))]) : _vm._e(), _c('image', {
+	      staticClass: ["itemPhoto"],
+	      attrs: {
+	        "src": item.src
+	      }
+	    }), (item.desc) ? _c('text', {
+	      staticClass: ["itemDesc"]
+	    }, [_vm._v(_vm._s(item.desc))]) : _vm._e(), (item.behaviourName) ? _c('text', {
+	      staticClass: ["itemClickBehaviour"]
+	    }, [_vm._v(" " + _vm._s(item.behaviourName))]) : _vm._e()])])
+	  }), _c('header', {
+	    staticClass: ["footer"]
+	  }, [_c('text', {
+	    staticClass: ["stickyText"]
+	  }, [_vm._v("Footer")])]), _c('div', {
+	    staticClass: ["fixedItem"],
+	    on: {
+	      "click": _vm.scrollToTop
+	    }
+	  }, [_c('text', {
+	    staticClass: ["fixedText"]
+	  }, [_vm._v("Top")])])], 2)
+	},staticRenderFns: []}
+	module.exports.render._withStripped = true
+
+/***/ }
+
+/******/ });
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/61ab9f49/ios/playground/bundlejs/component/marquee-demo.js
----------------------------------------------------------------------
diff --git a/ios/playground/bundlejs/component/marquee-demo.js b/ios/playground/bundlejs/component/marquee-demo.js
index 0cde2dc..1998ed5 100644
--- a/ios/playground/bundlejs/component/marquee-demo.js
+++ b/ios/playground/bundlejs/component/marquee-demo.js
@@ -44,8 +44,8 @@
 /* 0 */
 /***/ function(module, exports, __webpack_require__) {
 
-	var __weex_template__ = __webpack_require__(106)
-	var __weex_script__ = __webpack_require__(107)
+	var __weex_template__ = __webpack_require__(111)
+	var __weex_script__ = __webpack_require__(112)
 
 	__weex_define__('@weex-component/eeaccd3d9c9113871c5ec6aa21c1c2cd', [], function(__weex_require__, __weex_exports__, __weex_module__) {
 
@@ -2044,7 +2044,12 @@
 /* 103 */,
 /* 104 */,
 /* 105 */,
-/* 106 */
+/* 106 */,
+/* 107 */,
+/* 108 */,
+/* 109 */,
+/* 110 */,
+/* 111 */
 /***/ function(module, exports) {
 
 	module.exports = {
@@ -2106,7 +2111,7 @@
 	}
 
 /***/ },
-/* 107 */
+/* 112 */
 /***/ function(module, exports, __webpack_require__) {
 
 	module.exports = function(module, exports, __weex_require__){'use strict';

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/61ab9f49/ios/playground/bundlejs/component/process-bar-demo.js
----------------------------------------------------------------------
diff --git a/ios/playground/bundlejs/component/process-bar-demo.js b/ios/playground/bundlejs/component/process-bar-demo.js
index f0ece8f..5f63bc4 100644
--- a/ios/playground/bundlejs/component/process-bar-demo.js
+++ b/ios/playground/bundlejs/component/process-bar-demo.js
@@ -44,9 +44,9 @@
 /* 0 */
 /***/ function(module, exports, __webpack_require__) {
 
-	var __weex_template__ = __webpack_require__(145)
-	var __weex_style__ = __webpack_require__(146)
-	var __weex_script__ = __webpack_require__(147)
+	var __weex_template__ = __webpack_require__(150)
+	var __weex_style__ = __webpack_require__(151)
+	var __weex_script__ = __webpack_require__(152)
 
 	__weex_define__('@weex-component/0a82ae39306363e81eeac009d30abc0a', [], function(__weex_require__, __weex_exports__, __weex_module__) {
 
@@ -2086,7 +2086,12 @@
 /* 142 */,
 /* 143 */,
 /* 144 */,
-/* 145 */
+/* 145 */,
+/* 146 */,
+/* 147 */,
+/* 148 */,
+/* 149 */,
+/* 150 */
 /***/ function(module, exports) {
 
 	module.exports = {
@@ -2124,13 +2129,13 @@
 	}
 
 /***/ },
-/* 146 */
+/* 151 */
 /***/ function(module, exports) {
 
 	module.exports = {}
 
 /***/ },
-/* 147 */
+/* 152 */
 /***/ function(module, exports, __webpack_require__) {
 
 	module.exports = function(module, exports, __weex_require__){'use strict';

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/61ab9f49/ios/playground/bundlejs/component/scroller-demo.js
----------------------------------------------------------------------
diff --git a/ios/playground/bundlejs/component/scroller-demo.js b/ios/playground/bundlejs/component/scroller-demo.js
index ec6656b..9709d4c 100644
--- a/ios/playground/bundlejs/component/scroller-demo.js
+++ b/ios/playground/bundlejs/component/scroller-demo.js
@@ -44,9 +44,9 @@
 /* 0 */
 /***/ function(module, exports, __webpack_require__) {
 
-	var __weex_template__ = __webpack_require__(148)
-	var __weex_style__ = __webpack_require__(149)
-	var __weex_script__ = __webpack_require__(150)
+	var __weex_template__ = __webpack_require__(153)
+	var __weex_style__ = __webpack_require__(154)
+	var __weex_script__ = __webpack_require__(155)
 
 	__weex_define__('@weex-component/3999ea06e04b487185c2565d7cda9180', [], function(__weex_require__, __weex_exports__, __weex_module__) {
 
@@ -2041,8 +2041,22 @@
 /* 97 */,
 /* 98 */,
 /* 99 */,
-/* 100 */,
-/* 101 */,
+/* 100 */
+/***/ function(module, exports, __webpack_require__) {
+
+	module.exports = { "default": __webpack_require__(101), __esModule: true };
+
+/***/ },
+/* 101 */
+/***/ function(module, exports, __webpack_require__) {
+
+	var core  = __webpack_require__(34)
+	  , $JSON = core.JSON || (core.JSON = {stringify: JSON.stringify});
+	module.exports = function stringify(it){ // eslint-disable-line no-unused-vars
+	  return $JSON.stringify.apply($JSON, arguments);
+	};
+
+/***/ },
 /* 102 */,
 /* 103 */,
 /* 104 */,
@@ -2089,72 +2103,84 @@
 /* 145 */,
 /* 146 */,
 /* 147 */,
-/* 148 */
+/* 148 */,
+/* 149 */,
+/* 150 */,
+/* 151 */,
+/* 152 */,
+/* 153 */
 /***/ function(module, exports) {
 
 	module.exports = {
-	  "type": "scroller",
-	  "classList": [
-	    "list"
-	  ],
-	  "attr": {
-	    "append\uff1d\"tree\"": ""
-	  },
+	  "type": "div",
 	  "children": [
 	    {
-	      "type": "refresh",
-	      "classList": [
-	        "refresh-view"
-	      ],
-	      "attr": {
-	        "display": function () {return this.refresh_display}
-	      },
-	      "events": {
-	        "refresh": "onrefresh"
+	      "type": "div",
+	      "style": {
+	        "height": 20,
+	        "width": 750,
+	        "borderColor": "#000000",
+	        "borderWidth": 2,
+	        "justifyContent": "center"
 	      },
 	      "children": [
 	        {
-	          "type": "loading-indicator",
-	          "classList": [
-	            "indicator"
-	          ]
-	        },
-	        {
-	          "type": "text",
-	          "classList": [
-	            "refresh-arrow"
-	          ],
+	          "type": "div",
 	          "style": {
-	            "textAlign": "center",
-	            "color": "rgb(238,162,54)"
-	          },
-	          "shown": function () {return (this.refresh_display==='hide')},
-	          "attr": {
-	            "value": "Pull To Refresh"
+	            "height": 14,
+	            "width": function () {return this.progress_width},
+	            "marginLeft": function () {return this.progress},
+	            "backgroundColor": "#808080"
 	          }
 	        }
 	      ]
 	    },
 	    {
-	      "type": "div",
-	      "classList": [
-	        "section"
-	      ],
-	      "repeat": function () {return this.sections},
+	      "type": "text",
+	      "style": {
+	        "width": 750
+	      },
+	      "attr": {
+	        "value": function () {return this.event}
+	      }
+	    },
+	    {
+	      "type": "scroller",
+	      "id": "scroller",
+	      "events": {
+	        "scroll": "onScroll"
+	      },
 	      "children": [
 	        {
-	          "type": "div",
+	          "type": "refresh",
 	          "classList": [
-	            "header"
+	            "refresh-view"
 	          ],
+	          "attr": {
+	            "display": function () {return this.refresh_display}
+	          },
+	          "events": {
+	            "refresh": "onrefresh"
+	          },
 	          "children": [
 	            {
+	              "type": "loading-indicator",
+	              "classList": [
+	                "indicator"
+	              ]
+	            },
+	            {
 	              "type": "text",
 	              "classList": [
-	                "header-title"
+	                "refresh-arrow"
 	              ],
+	              "style": {
+	                "textAlign": "center",
+	                "color": "rgb(238,162,54)"
+	              },
+	              "shown": function () {return (this.refresh_display==='hide')},
 	              "attr": {
-	                "value": function () {return this.title}
+	                "value": "Pull To Refresh"
 	              }
 	            }
 	          ]
@@ -2162,39 +2188,65 @@
 	        {
 	          "type": "div",
 	          "classList": [
-	            "item"
+	            "section"
 	          ],
-	          "repeat": function () {return this.items},
+	          "repeat": function () {return this.sections},
 	          "children": [
 	            {
-	              "type": "text",
+	              "type": "div",
 	              "classList": [
-	                "item-title"
+	                "header"
 	              ],
-	              "attr": {
-	                "value": function () {return 'row ' + (this.id)}
-	              }
+	              "children": [
+	                {
+	                  "type": "text",
+	                  "classList": [
+	                    "header-title"
+	                  ],
+	                  "attr": {
+	                    "value": function () {return this.title}
+	                  }
+	                }
+	              ]
+	            },
+	            {
+	              "type": "div",
+	              "classList": [
+	                "item"
+	              ],
+	              "repeat": function () {return this.items},
+	              "children": [
+	                {
+	                  "type": "text",
+	                  "classList": [
+	                    "item-title"
+	                  ],
+	                  "attr": {
+	                    "value": function () {return 'row ' + (this.id)}
+	                  }
+	                }
+	              ]
 	            }
 	          ]
-	        }
-	      ]
-	    },
-	    {
-	      "type": "loading",
-	      "classList": [
-	        "loading-view"
-	      ],
-	      "attr": {
-	        "display": function () {return this.loading_display}
-	      },
-	      "events": {
-	        "loading": "onloading"
-	      },
-	      "children": [
+	        },
 	        {
-	          "type": "loading-indicator",
+	          "type": "loading",
 	          "classList": [
-	            "indicator"
+	            "loading-view"
+	          ],
+	          "attr": {
+	            "display": function () {return this.loading_display}
+	          },
+	          "events": {
+	            "loading": "onloading"
+	          },
+	          "children": [
+	            {
+	              "type": "loading-indicator",
+	              "classList": [
+	                "indicator"
+	              ]
+	            }
 	          ]
 	        }
 	      ]
@@ -2203,7 +2255,7 @@
 	}
 
 /***/ },
-/* 149 */
+/* 154 */
 /***/ function(module, exports) {
 
 	module.exports = {
@@ -2254,12 +2306,19 @@
 	}
 
 /***/ },
-/* 150 */
+/* 155 */
 /***/ function(module, exports, __webpack_require__) {
 
 	module.exports = function(module, exports, __weex_require__){'use strict';
 
+	var _stringify = __webpack_require__(100);
+
+	var _stringify2 = _interopRequireDefault(_stringify);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
 	__webpack_require__(4);
+	var dom = weex.requireModule('dom');
 	module.exports = {
 	  methods: {
 	    onrefresh: function onrefresh(e) {
@@ -2284,9 +2343,23 @@
 	        }
 	        self.loading_display = 'hide';
 	      }, 3000);
+	    },
+	    onScroll: function onScroll(e) {
+	      var self = this;
+	      this.event = 'contentOffset: ' + (0, _stringify2.default)(e.contentOffset) + '\ncontentSize: ' + (0, _stringify2.default)(e.contentSize);
+	      dom.getComponentRect(this.$el('scroller'), function (ret) {
+	        console.log(ret.size.height);
+	        var listHeight = ret.size.height;
+	        self.progress_width = listHeight / e.contentSize.height * 750;
+	        var offsetY = e.contentOffset.y > 0 ? 0 : Math.abs(e.contentOffset.y);
+	        self.progress = offsetY / (e.contentSize.height - listHeight) * (750 - self.progress_width);
+	      });
 	    }
 	  },
 	  data: function () {return {
+	    event: '-',
+	    progress_width: 0,
+	    progress: 0,
 	    refresh_display: 'hide',
 	    loading_display: 'hide',
 	    sections: [{

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/61ab9f49/ios/playground/bundlejs/component/slider-neighbor/index.js
----------------------------------------------------------------------
diff --git a/ios/playground/bundlejs/component/slider-neighbor/index.js b/ios/playground/bundlejs/component/slider-neighbor/index.js
index a6ce716..443677a 100644
--- a/ios/playground/bundlejs/component/slider-neighbor/index.js
+++ b/ios/playground/bundlejs/component/slider-neighbor/index.js
@@ -45,8 +45,8 @@
 /***/ 0:
 /***/ function(module, exports, __webpack_require__) {
 
-	var __weex_template__ = __webpack_require__(151)
-	var __weex_script__ = __webpack_require__(152)
+	var __weex_template__ = __webpack_require__(156)
+	var __weex_script__ = __webpack_require__(157)
 
 	__weex_define__('@weex-component/3157b803090c07c091af8fa3147f3d5c', [], function(__weex_require__, __weex_exports__, __weex_module__) {
 
@@ -63,7 +63,7 @@
 
 /***/ },
 
-/***/ 151:
+/***/ 156:
 /***/ function(module, exports) {
 
 	module.exports = {
@@ -215,7 +215,7 @@
 
 /***/ },
 
-/***/ 152:
+/***/ 157:
 /***/ function(module, exports) {
 
 	module.exports = function(module, exports, __weex_require__){"use strict";

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/61ab9f49/ios/playground/bundlejs/component/slider-neighbor/slider-neighbor-item.js
----------------------------------------------------------------------
diff --git a/ios/playground/bundlejs/component/slider-neighbor/slider-neighbor-item.js b/ios/playground/bundlejs/component/slider-neighbor/slider-neighbor-item.js
index 79eed2a..057e60f 100644
--- a/ios/playground/bundlejs/component/slider-neighbor/slider-neighbor-item.js
+++ b/ios/playground/bundlejs/component/slider-neighbor/slider-neighbor-item.js
@@ -45,9 +45,9 @@
 /***/ 0:
 /***/ function(module, exports, __webpack_require__) {
 
-	var __weex_template__ = __webpack_require__(153)
-	var __weex_style__ = __webpack_require__(154)
-	var __weex_script__ = __webpack_require__(155)
+	var __weex_template__ = __webpack_require__(158)
+	var __weex_style__ = __webpack_require__(159)
+	var __weex_script__ = __webpack_require__(160)
 
 	__weex_define__('@weex-component/d723bedd436352d63e4fa599317a8037', [], function(__weex_require__, __weex_exports__, __weex_module__) {
 
@@ -66,7 +66,7 @@
 
 /***/ },
 
-/***/ 153:
+/***/ 158:
 /***/ function(module, exports) {
 
 	module.exports = {
@@ -89,7 +89,7 @@
 
 /***/ },
 
-/***/ 154:
+/***/ 159:
 /***/ function(module, exports) {
 
 	module.exports = {
@@ -108,7 +108,7 @@
 
 /***/ },
 
-/***/ 155:
+/***/ 160:
 /***/ function(module, exports) {
 
 	module.exports = function(module, exports, __weex_require__){'use strict';

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/61ab9f49/ios/playground/bundlejs/component/slider-neighbor/slider-neighbor-page.js
----------------------------------------------------------------------
diff --git a/ios/playground/bundlejs/component/slider-neighbor/slider-neighbor-page.js b/ios/playground/bundlejs/component/slider-neighbor/slider-neighbor-page.js
index 335e7e6..c440f76 100644
--- a/ios/playground/bundlejs/component/slider-neighbor/slider-neighbor-page.js
+++ b/ios/playground/bundlejs/component/slider-neighbor/slider-neighbor-page.js
@@ -45,10 +45,10 @@
 /***/ 0:
 /***/ function(module, exports, __webpack_require__) {
 
-	__webpack_require__(156)
-	var __weex_template__ = __webpack_require__(157)
-	var __weex_style__ = __webpack_require__(158)
-	var __weex_script__ = __webpack_require__(159)
+	__webpack_require__(161)
+	var __weex_template__ = __webpack_require__(162)
+	var __weex_style__ = __webpack_require__(163)
+	var __weex_script__ = __webpack_require__(164)
 
 	__weex_define__('@weex-component/01b832918f8c3165cebb597eb613f790', [], function(__weex_require__, __weex_exports__, __weex_module__) {
 
@@ -67,7 +67,7 @@
 
 /***/ },
 
-/***/ 153:
+/***/ 158:
 /***/ function(module, exports) {
 
 	module.exports = {
@@ -90,7 +90,7 @@
 
 /***/ },
 
-/***/ 154:
+/***/ 159:
 /***/ function(module, exports) {
 
 	module.exports = {
@@ -109,7 +109,7 @@
 
 /***/ },
 
-/***/ 155:
+/***/ 160:
 /***/ function(module, exports) {
 
 	module.exports = function(module, exports, __weex_require__){'use strict';
@@ -131,12 +131,12 @@
 
 /***/ },
 
-/***/ 156:
+/***/ 161:
 /***/ function(module, exports, __webpack_require__) {
 
-	var __weex_template__ = __webpack_require__(153)
-	var __weex_style__ = __webpack_require__(154)
-	var __weex_script__ = __webpack_require__(155)
+	var __weex_template__ = __webpack_require__(158)
+	var __weex_style__ = __webpack_require__(159)
+	var __weex_script__ = __webpack_require__(160)
 
 	__weex_define__('@weex-component/slider-neighbor-item', [], function(__weex_require__, __weex_exports__, __weex_module__) {
 
@@ -154,7 +154,7 @@
 
 /***/ },
 
-/***/ 157:
+/***/ 162:
 /***/ function(module, exports) {
 
 	module.exports = {
@@ -172,7 +172,7 @@
 
 /***/ },
 
-/***/ 158:
+/***/ 163:
 /***/ function(module, exports) {
 
 	module.exports = {
@@ -184,7 +184,7 @@
 
 /***/ },
 
-/***/ 159:
+/***/ 164:
 /***/ function(module, exports) {
 
 	module.exports = function(module, exports, __weex_require__){"use strict";

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/61ab9f49/ios/playground/bundlejs/component/slider-tab.js
----------------------------------------------------------------------
diff --git a/ios/playground/bundlejs/component/slider-tab.js b/ios/playground/bundlejs/component/slider-tab.js
new file mode 100644
index 0000000..c1816d3
--- /dev/null
+++ b/ios/playground/bundlejs/component/slider-tab.js
@@ -0,0 +1,633 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId])
+/******/ 			return installedModules[moduleId].exports;
+
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			exports: {},
+/******/ 			id: moduleId,
+/******/ 			loaded: false
+/******/ 		};
+
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ 		// Flag the module as loaded
+/******/ 		module.loaded = true;
+
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+
+
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "";
+
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 0:
+/***/ function(module, exports, __webpack_require__) {
+
+	var __weex_template__ = __webpack_require__(165)
+	var __weex_style__ = __webpack_require__(166)
+	var __weex_script__ = __webpack_require__(167)
+
+	__weex_define__('@weex-component/80b287cd7ee83071ff869144c4552259', [], function(__weex_require__, __weex_exports__, __weex_module__) {
+
+	    __weex_script__(__weex_module__, __weex_exports__, __weex_require__)
+	    if (__weex_exports__.__esModule && __weex_exports__.default) {
+	      __weex_module__.exports = __weex_exports__.default
+	    }
+
+	    __weex_module__.exports.template = __weex_template__
+
+	    __weex_module__.exports.style = __weex_style__
+
+	})
+
+	__weex_bootstrap__('@weex-component/80b287cd7ee83071ff869144c4552259',undefined,undefined)
+
+/***/ },
+
+/***/ 32:
+/***/ function(module, exports, __webpack_require__) {
+
+	var global    = __webpack_require__(33)
+	  , core      = __webpack_require__(34)
+	  , ctx       = __webpack_require__(35)
+	  , hide      = __webpack_require__(37)
+	  , PROTOTYPE = 'prototype';
+
+	var $export = function(type, name, source){
+	  var IS_FORCED = type & $export.F
+	    , IS_GLOBAL = type & $export.G
+	    , IS_STATIC = type & $export.S
+	    , IS_PROTO  = type & $export.P
+	    , IS_BIND   = type & $export.B
+	    , IS_WRAP   = type & $export.W
+	    , exports   = IS_GLOBAL ? core : core[name] || (core[name] = {})
+	    , expProto  = exports[PROTOTYPE]
+	    , target    = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE]
+	    , key, own, out;
+	  if(IS_GLOBAL)source = name;
+	  for(key in source){
+	    // contains in native
+	    own = !IS_FORCED && target && target[key] !== undefined;
+	    if(own && key in exports)continue;
+	    // export native or passed
+	    out = own ? target[key] : source[key];
+	    // prevent global pollution for namespaces
+	    exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]
+	    // bind timers to global for call from export context
+	    : IS_BIND && own ? ctx(out, global)
+	    // wrap global constructors for prevent change them in library
+	    : IS_WRAP && target[key] == out ? (function(C){
+	      var F = function(a, b, c){
+	        if(this instanceof C){
+	          switch(arguments.length){
+	            case 0: return new C;
+	            case 1: return new C(a);
+	            case 2: return new C(a, b);
+	          } return new C(a, b, c);
+	        } return C.apply(this, arguments);
+	      };
+	      F[PROTOTYPE] = C[PROTOTYPE];
+	      return F;
+	    // make static versions for prototype methods
+	    })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
+	    // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%
+	    if(IS_PROTO){
+	      (exports.virtual || (exports.virtual = {}))[key] = out;
+	      // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%
+	      if(type & $export.R && expProto && !expProto[key])hide(expProto, key, out);
+	    }
+	  }
+	};
+	// type bitmap
+	$export.F = 1;   // forced
+	$export.G = 2;   // global
+	$export.S = 4;   // static
+	$export.P = 8;   // proto
+	$export.B = 16;  // bind
+	$export.W = 32;  // wrap
+	$export.U = 64;  // safe
+	$export.R = 128; // real proto method for `library` 
+	module.exports = $export;
+
+/***/ },
+
+/***/ 33:
+/***/ function(module, exports) {
+
+	// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
+	var global = module.exports = typeof window != 'undefined' && window.Math == Math
+	  ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')();
+	if(typeof __g == 'number')__g = global; // eslint-disable-line no-undef
+
+/***/ },
+
+/***/ 34:
+/***/ function(module, exports) {
+
+	var core = module.exports = {version: '2.4.0'};
+	if(typeof __e == 'number')__e = core; // eslint-disable-line no-undef
+
+/***/ },
+
+/***/ 35:
+/***/ function(module, exports, __webpack_require__) {
+
+	// optional / simple context binding
+	var aFunction = __webpack_require__(36);
+	module.exports = function(fn, that, length){
+	  aFunction(fn);
+	  if(that === undefined)return fn;
+	  switch(length){
+	    case 1: return function(a){
+	      return fn.call(that, a);
+	    };
+	    case 2: return function(a, b){
+	      return fn.call(that, a, b);
+	    };
+	    case 3: return function(a, b, c){
+	      return fn.call(that, a, b, c);
+	    };
+	  }
+	  return function(/* ...args */){
+	    return fn.apply(that, arguments);
+	  };
+	};
+
+/***/ },
+
+/***/ 36:
+/***/ function(module, exports) {
+
+	module.exports = function(it){
+	  if(typeof it != 'function')throw TypeError(it + ' is not a function!');
+	  return it;
+	};
+
+/***/ },
+
+/***/ 37:
+/***/ function(module, exports, __webpack_require__) {
+
+	var dP         = __webpack_require__(38)
+	  , createDesc = __webpack_require__(46);
+	module.exports = __webpack_require__(42) ? function(object, key, value){
+	  return dP.f(object, key, createDesc(1, value));
+	} : function(object, key, value){
+	  object[key] = value;
+	  return object;
+	};
+
+/***/ },
+
+/***/ 38:
+/***/ function(module, exports, __webpack_require__) {
+
+	var anObject       = __webpack_require__(39)
+	  , IE8_DOM_DEFINE = __webpack_require__(41)
+	  , toPrimitive    = __webpack_require__(45)
+	  , dP             = Object.defineProperty;
+
+	exports.f = __webpack_require__(42) ? Object.defineProperty : function defineProperty(O, P, Attributes){
+	  anObject(O);
+	  P = toPrimitive(P, true);
+	  anObject(Attributes);
+	  if(IE8_DOM_DEFINE)try {
+	    return dP(O, P, Attributes);
+	  } catch(e){ /* empty */ }
+	  if('get' in Attributes || 'set' in Attributes)throw TypeError('Accessors not supported!');
+	  if('value' in Attributes)O[P] = Attributes.value;
+	  return O;
+	};
+
+/***/ },
+
+/***/ 39:
+/***/ function(module, exports, __webpack_require__) {
+
+	var isObject = __webpack_require__(40);
+	module.exports = function(it){
+	  if(!isObject(it))throw TypeError(it + ' is not an object!');
+	  return it;
+	};
+
+/***/ },
+
+/***/ 40:
+/***/ function(module, exports) {
+
+	module.exports = function(it){
+	  return typeof it === 'object' ? it !== null : typeof it === 'function';
+	};
+
+/***/ },
+
+/***/ 41:
+/***/ function(module, exports, __webpack_require__) {
+
+	module.exports = !__webpack_require__(42) && !__webpack_require__(43)(function(){
+	  return Object.defineProperty(__webpack_require__(44)('div'), 'a', {get: function(){ return 7; }}).a != 7;
+	});
+
+/***/ },
+
+/***/ 42:
+/***/ function(module, exports, __webpack_require__) {
+
+	// Thank's IE8 for his funny defineProperty
+	module.exports = !__webpack_require__(43)(function(){
+	  return Object.defineProperty({}, 'a', {get: function(){ return 7; }}).a != 7;
+	});
+
+/***/ },
+
+/***/ 43:
+/***/ function(module, exports) {
+
+	module.exports = function(exec){
+	  try {
+	    return !!exec();
+	  } catch(e){
+	    return true;
+	  }
+	};
+
+/***/ },
+
+/***/ 44:
+/***/ function(module, exports, __webpack_require__) {
+
+	var isObject = __webpack_require__(40)
+	  , document = __webpack_require__(33).document
+	  // in old IE typeof document.createElement is 'object'
+	  , is = isObject(document) && isObject(document.createElement);
+	module.exports = function(it){
+	  return is ? document.createElement(it) : {};
+	};
+
+/***/ },
+
+/***/ 45:
+/***/ function(module, exports, __webpack_require__) {
+
+	// 7.1.1 ToPrimitive(input [, PreferredType])
+	var isObject = __webpack_require__(40);
+	// instead of the ES6 spec version, we didn't implement @@toPrimitive case
+	// and the second argument - flag - preferred type is a string
+	module.exports = function(it, S){
+	  if(!isObject(it))return it;
+	  var fn, val;
+	  if(S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val;
+	  if(typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it)))return val;
+	  if(!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val;
+	  throw TypeError("Can't convert object to primitive value");
+	};
+
+/***/ },
+
+/***/ 46:
+/***/ function(module, exports) {
+
+	module.exports = function(bitmap, value){
+	  return {
+	    enumerable  : !(bitmap & 1),
+	    configurable: !(bitmap & 2),
+	    writable    : !(bitmap & 4),
+	    value       : value
+	  };
+	};
+
+/***/ },
+
+/***/ 165:
+/***/ function(module, exports) {
+
+	module.exports = {
+	  "type": "div",
+	  "style": {
+	    "padding": 25
+	  },
+	  "children": [
+	    {
+	      "type": "div",
+	      "style": {
+	        "height": 80,
+	        "flexDirection": "row"
+	      },
+	      "children": [
+	        {
+	          "type": "div",
+	          "style": {
+	            "flex": 1,
+	            "backgroundColor": "#008B8B",
+	            "justifyContent": "center",
+	            "alignItems": "center"
+	          },
+	          "events": {
+	            "click": function ($event) {this.goto(0,$event)}
+	          },
+	          "children": [
+	            {
+	              "type": "text",
+	              "classList": [
+	                "page-title"
+	              ],
+	              "attr": {
+	                "value": "Page 1"
+	              }
+	            }
+	          ]
+	        },
+	        {
+	          "type": "div",
+	          "style": {
+	            "flex": 1,
+	            "backgroundColor": "#7FFFD4",
+	            "justifyContent": "center",
+	            "alignItems": "center"
+	          },
+	          "events": {
+	            "click": function ($event) {this.goto(1,$event)}
+	          },
+	          "children": [
+	            {
+	              "type": "text",
+	              "classList": [
+	                "page-title"
+	              ],
+	              "attr": {
+	                "value": "Page 2"
+	              }
+	            }
+	          ]
+	        },
+	        {
+	          "type": "div",
+	          "style": {
+	            "flex": 1,
+	            "backgroundColor": "#008B8B",
+	            "justifyContent": "center",
+	            "alignItems": "center"
+	          },
+	          "events": {
+	            "click": function ($event) {this.goto(2,$event)}
+	          },
+	          "children": [
+	            {
+	              "type": "text",
+	              "classList": [
+	                "page-title"
+	              ],
+	              "attr": {
+	                "value": "Page 3"
+	              }
+	            }
+	          ]
+	        }
+	      ]
+	    },
+	    {
+	      "type": "div",
+	      "style": {
+	        "height": 10,
+	        "backgroundColor": "#87CEEB"
+	      },
+	      "children": [
+	        {
+	          "type": "div",
+	          "style": {
+	            "width": 233,
+	            "height": 10,
+	            "marginLeft": function () {return this.progress},
+	            "backgroundColor": "#00008B"
+	          }
+	        }
+	      ]
+	    },
+	    {
+	      "type": "slider",
+	      "classList": [
+	        "slider"
+	      ],
+	      "attr": {
+	        "interval": "4500",
+	        "index": function () {return this.index},
+	        "offsetXAccuracy": "0.01"
+	      },
+	      "events": {
+	        "change": "onchange",
+	        "scroll": "onscroll"
+	      },
+	      "append": "tree",
+	      "children": [
+	        {
+	          "type": "div",
+	          "classList": [
+	            "frame"
+	          ],
+	          "repeat": {
+	            "expression": function () {return this.imageList},
+	            "value": "img"
+	          },
+	          "children": [
+	            {
+	              "type": "image",
+	              "classList": [
+	                "image"
+	              ],
+	              "attr": {
+	                "resize": "cover",
+	                "src": function () {return this.img.src}
+	              }
+	            },
+	            {
+	              "type": "text",
+	              "classList": [
+	                "title"
+	              ],
+	              "attr": {
+	                "value": function () {return this.img.title}
+	              }
+	            }
+	          ]
+	        },
+	        {
+	          "type": "indicator",
+	          "style": {
+	            "height": 20
+	          }
+	        }
+	      ]
+	    }
+	  ]
+	}
+
+/***/ },
+
+/***/ 166:
+/***/ function(module, exports) {
+
+	module.exports = {
+	  "page-title": {
+	    "color": "#000000",
+	    "fontSize": 40,
+	    "fontWeight": "bold"
+	  },
+	  "image": {
+	    "width": 700,
+	    "height": 700
+	  },
+	  "slider": {
+	    "width": 700,
+	    "height": 700,
+	    "position": "absolute",
+	    "borderWidth": 2,
+	    "borderStyle": "solid",
+	    "borderColor": "#41B883"
+	  },
+	  "title": {
+	    "position": "absolute",
+	    "top": 20,
+	    "left": 20,
+	    "paddingLeft": 20,
+	    "width": 200,
+	    "color": "#FFFFFF",
+	    "fontSize": 36,
+	    "lineHeight": 60,
+	    "backgroundColor": "rgba(0,0,0,0.3)"
+	  },
+	  "frame": {
+	    "width": 700,
+	    "height": 700
+	  }
+	}
+
+/***/ },
+
+/***/ 167:
+/***/ function(module, exports, __webpack_require__) {
+
+	module.exports = function(module, exports, __weex_require__){'use strict';
+
+	Object.defineProperty(exports, "__esModule", {
+	  value: true
+	});
+
+	var _defineProperty2 = __webpack_require__(168);
+
+	var _defineProperty3 = _interopRequireDefault(_defineProperty2);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	exports.default = {
+	  data: {
+	    imageList: [{ title: 'Page 1', src: 'https://gd2.alicdn.com/bao/uploaded/i2/T14H1LFwBcXXXXXXXX_!!0-item_pic.jpg' }, {
+	      title: 'Page 2',
+	      src: 'https://gd1.alicdn.com/bao/uploaded/i1/TB1PXJCJFXXXXciXFXXXXXXXXXX_!!0-item_pic.jpg'
+	    }, {
+	      title: 'Page 3',
+	      src: 'https://gd3.alicdn.com/bao/uploaded/i3/TB1x6hYLXXXXXazXVXXXXXXXXXX_!!0-item_pic.jpg'
+	    }],
+	    index: 0,
+	    progress: 0
+	  },
+	  methods: (0, _defineProperty3.default)({
+	    onchange: function onchange(event) {
+	      console.log('changed:', event.index);
+	    },
+	    goto: function goto(i) {
+	      this.index = i;
+	      this.progress = i * 233;
+	    },
+	    onscroll: function onscroll(e) {
+	      var ratio = parseFloat(e.offsetXRatio);
+	      this.progress = 233 * this.index + 233 * -ratio;
+	    }
+	  }, 'onchange', function onchange(e) {
+	    this.goto(parseInt(e.index));
+	  })
+	};}
+	/* generated by weex-loader */
+
+
+/***/ },
+
+/***/ 168:
+/***/ function(module, exports, __webpack_require__) {
+
+	"use strict";
+
+	exports.__esModule = true;
+
+	var _defineProperty = __webpack_require__(169);
+
+	var _defineProperty2 = _interopRequireDefault(_defineProperty);
+
+	function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+	exports.default = function (obj, key, value) {
+	  if (key in obj) {
+	    (0, _defineProperty2.default)(obj, key, {
+	      value: value,
+	      enumerable: true,
+	      configurable: true,
+	      writable: true
+	    });
+	  } else {
+	    obj[key] = value;
+	  }
+
+	  return obj;
+	};
+
+/***/ },
+
+/***/ 169:
+/***/ function(module, exports, __webpack_require__) {
+
+	module.exports = { "default": __webpack_require__(170), __esModule: true };
+
+/***/ },
+
+/***/ 170:
+/***/ function(module, exports, __webpack_require__) {
+
+	__webpack_require__(171);
+	var $Object = __webpack_require__(34).Object;
+	module.exports = function defineProperty(it, key, desc){
+	  return $Object.defineProperty(it, key, desc);
+	};
+
+/***/ },
+
+/***/ 171:
+/***/ function(module, exports, __webpack_require__) {
+
+	var $export = __webpack_require__(32);
+	// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)
+	$export($export.S + $export.F * !__webpack_require__(42), 'Object', {defineProperty: __webpack_require__(38).f});
+
+/***/ }
+
+/******/ });
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/61ab9f49/ios/playground/bundlejs/component/slider/index.js
----------------------------------------------------------------------
diff --git a/ios/playground/bundlejs/component/slider/index.js b/ios/playground/bundlejs/component/slider/index.js
index 942e7b5..d1bfe1f 100644
--- a/ios/playground/bundlejs/component/slider/index.js
+++ b/ios/playground/bundlejs/component/slider/index.js
@@ -44,10 +44,10 @@
 /* 0 */
 /***/ function(module, exports, __webpack_require__) {
 
-	__webpack_require__(160)
-	var __weex_template__ = __webpack_require__(168)
-	var __weex_style__ = __webpack_require__(169)
-	var __weex_script__ = __webpack_require__(170)
+	__webpack_require__(172)
+	var __weex_template__ = __webpack_require__(180)
+	var __weex_style__ = __webpack_require__(181)
+	var __weex_script__ = __webpack_require__(182)
 
 	__weex_define__('@weex-component/0f29733e34d42a0cdfe7b98eb53bff4c', [], function(__weex_require__, __weex_exports__, __weex_module__) {
 
@@ -2102,13 +2102,25 @@
 /* 157 */,
 /* 158 */,
 /* 159 */,
-/* 160 */
+/* 160 */,
+/* 161 */,
+/* 162 */,
+/* 163 */,
+/* 164 */,
+/* 165 */,
+/* 166 */,
+/* 167 */,
+/* 168 */,
+/* 169 */,
+/* 170 */,
+/* 171 */,
+/* 172 */
 /***/ function(module, exports, __webpack_require__) {
 
-	__webpack_require__(161)
-	var __weex_template__ = __webpack_require__(165)
-	var __weex_style__ = __webpack_require__(166)
-	var __weex_script__ = __webpack_require__(167)
+	__webpack_require__(173)
+	var __weex_template__ = __webpack_require__(177)
+	var __weex_style__ = __webpack_require__(178)
+	var __weex_script__ = __webpack_require__(179)
 
 	__weex_define__('@weex-component/slider-page', [], function(__weex_require__, __weex_exports__, __weex_module__) {
 
@@ -2125,12 +2137,12 @@
 
 
 /***/ },
-/* 161 */
+/* 173 */
 /***/ function(module, exports, __webpack_require__) {
 
-	var __weex_template__ = __webpack_require__(162)
-	var __weex_style__ = __webpack_require__(163)
-	var __weex_script__ = __webpack_require__(164)
+	var __weex_template__ = __webpack_require__(174)
+	var __weex_style__ = __webpack_require__(175)
+	var __weex_script__ = __webpack_require__(176)
 
 	__weex_define__('@weex-component/slider-item', [], function(__weex_require__, __weex_exports__, __weex_module__) {
 
@@ -2147,7 +2159,7 @@
 
 
 /***/ },
-/* 162 */
+/* 174 */
 /***/ function(module, exports) {
 
 	module.exports = {
@@ -2161,7 +2173,7 @@
 	}
 
 /***/ },
-/* 163 */
+/* 175 */
 /***/ function(module, exports) {
 
 	module.exports = {
@@ -2172,7 +2184,7 @@
 	}
 
 /***/ },
-/* 164 */
+/* 176 */
 /***/ function(module, exports) {
 
 	module.exports = function(module, exports, __weex_require__){'use strict';
@@ -2193,7 +2205,7 @@
 
 
 /***/ },
-/* 165 */
+/* 177 */
 /***/ function(module, exports) {
 
 	module.exports = {
@@ -2210,7 +2222,7 @@
 	}
 
 /***/ },
-/* 166 */
+/* 178 */
 /***/ function(module, exports) {
 
 	module.exports = {
@@ -2223,7 +2235,7 @@
 	}
 
 /***/ },
-/* 167 */
+/* 179 */
 /***/ function(module, exports) {
 
 	module.exports = function(module, exports, __weex_require__){"use strict";
@@ -2248,7 +2260,7 @@
 
 
 /***/ },
-/* 168 */
+/* 180 */
 /***/ function(module, exports) {
 
 	module.exports = {
@@ -2588,7 +2600,7 @@
 	}
 
 /***/ },
-/* 169 */
+/* 181 */
 /***/ function(module, exports) {
 
 	module.exports = {
@@ -2612,7 +2624,7 @@
 	}
 
 /***/ },
-/* 170 */
+/* 182 */
 /***/ function(module, exports, __webpack_require__) {
 
 	module.exports = function(module, exports, __weex_require__){'use strict';

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/61ab9f49/ios/playground/bundlejs/component/slider/slider-item.js
----------------------------------------------------------------------
diff --git a/ios/playground/bundlejs/component/slider/slider-item.js b/ios/playground/bundlejs/component/slider/slider-item.js
index 2465a57..9111e0d 100644
--- a/ios/playground/bundlejs/component/slider/slider-item.js
+++ b/ios/playground/bundlejs/component/slider/slider-item.js
@@ -45,9 +45,9 @@
 /***/ 0:
 /***/ function(module, exports, __webpack_require__) {
 
-	var __weex_template__ = __webpack_require__(162)
-	var __weex_style__ = __webpack_require__(163)
-	var __weex_script__ = __webpack_require__(164)
+	var __weex_template__ = __webpack_require__(174)
+	var __weex_style__ = __webpack_require__(175)
+	var __weex_script__ = __webpack_require__(176)
 
 	__weex_define__('@weex-component/acad2f79d78cffd36dfaedd0c65d980d', [], function(__weex_require__, __weex_exports__, __weex_module__) {
 
@@ -66,7 +66,7 @@
 
 /***/ },
 
-/***/ 162:
+/***/ 174:
 /***/ function(module, exports) {
 
 	module.exports = {
@@ -81,7 +81,7 @@
 
 /***/ },
 
-/***/ 163:
+/***/ 175:
 /***/ function(module, exports) {
 
 	module.exports = {
@@ -93,7 +93,7 @@
 
 /***/ },
 
-/***/ 164:
+/***/ 176:
 /***/ function(module, exports) {
 
 	module.exports = function(module, exports, __weex_require__){'use strict';

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/61ab9f49/ios/playground/bundlejs/component/slider/slider-page.js
----------------------------------------------------------------------
diff --git a/ios/playground/bundlejs/component/slider/slider-page.js b/ios/playground/bundlejs/component/slider/slider-page.js
index 908b680..5b89589 100644
--- a/ios/playground/bundlejs/component/slider/slider-page.js
+++ b/ios/playground/bundlejs/component/slider/slider-page.js
@@ -45,10 +45,10 @@
 /***/ 0:
 /***/ function(module, exports, __webpack_require__) {
 
-	__webpack_require__(161)
-	var __weex_template__ = __webpack_require__(165)
-	var __weex_style__ = __webpack_require__(166)
-	var __weex_script__ = __webpack_require__(167)
+	__webpack_require__(173)
+	var __weex_template__ = __webpack_require__(177)
+	var __weex_style__ = __webpack_require__(178)
+	var __weex_script__ = __webpack_require__(179)
 
 	__weex_define__('@weex-component/ea51bd2d36d6d5354af97da097043629', [], function(__weex_require__, __weex_exports__, __weex_module__) {
 
@@ -67,12 +67,12 @@
 
 /***/ },
 
-/***/ 161:
+/***/ 173:
 /***/ function(module, exports, __webpack_require__) {
 
-	var __weex_template__ = __webpack_require__(162)
-	var __weex_style__ = __webpack_require__(163)
-	var __weex_script__ = __webpack_require__(164)
+	var __weex_template__ = __webpack_require__(174)
+	var __weex_style__ = __webpack_require__(175)
+	var __weex_script__ = __webpack_require__(176)
 
 	__weex_define__('@weex-component/slider-item', [], function(__weex_require__, __weex_exports__, __weex_module__) {
 
@@ -90,7 +90,7 @@
 
 /***/ },
 
-/***/ 162:
+/***/ 174:
 /***/ function(module, exports) {
 
 	module.exports = {
@@ -105,7 +105,7 @@
 
 /***/ },
 
-/***/ 163:
+/***/ 175:
 /***/ function(module, exports) {
 
 	module.exports = {
@@ -117,7 +117,7 @@
 
 /***/ },
 
-/***/ 164:
+/***/ 176:
 /***/ function(module, exports) {
 
 	module.exports = function(module, exports, __weex_require__){'use strict';
@@ -139,7 +139,7 @@
 
 /***/ },
 
-/***/ 165:
+/***/ 177:
 /***/ function(module, exports) {
 
 	module.exports = {
@@ -157,7 +157,7 @@
 
 /***/ },
 
-/***/ 166:
+/***/ 178:
 /***/ function(module, exports) {
 
 	module.exports = {
@@ -171,7 +171,7 @@
 
 /***/ },
 
-/***/ 167:
+/***/ 179:
 /***/ function(module, exports) {
 
 	module.exports = function(module, exports, __weex_require__){"use strict";

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/61ab9f49/ios/playground/bundlejs/component/text-demo.js
----------------------------------------------------------------------
diff --git a/ios/playground/bundlejs/component/text-demo.js b/ios/playground/bundlejs/component/text-demo.js
index 44bf5b6..8f530d0 100644
--- a/ios/playground/bundlejs/component/text-demo.js
+++ b/ios/playground/bundlejs/component/text-demo.js
@@ -44,9 +44,9 @@
 /* 0 */
 /***/ function(module, exports, __webpack_require__) {
 
-	var __weex_template__ = __webpack_require__(176)
-	var __weex_style__ = __webpack_require__(177)
-	var __weex_script__ = __webpack_require__(178)
+	var __weex_template__ = __webpack_require__(188)
+	var __weex_style__ = __webpack_require__(189)
+	var __weex_script__ = __webpack_require__(190)
 
 	__weex_define__('@weex-component/c0ea4ed580d5c38f82bd25b5602f26fe', [], function(__weex_require__, __weex_exports__, __weex_module__) {
 
@@ -2117,7 +2117,19 @@
 /* 173 */,
 /* 174 */,
 /* 175 */,
-/* 176 */
+/* 176 */,
+/* 177 */,
+/* 178 */,
+/* 179 */,
+/* 180 */,
+/* 181 */,
+/* 182 */,
+/* 183 */,
+/* 184 */,
+/* 185 */,
+/* 186 */,
+/* 187 */,
+/* 188 */
 /***/ function(module, exports) {
 
 	module.exports = {
@@ -2605,7 +2617,7 @@
 	}
 
 /***/ },
-/* 177 */
+/* 189 */
 /***/ function(module, exports) {
 
 	module.exports = {
@@ -2616,7 +2628,7 @@
 	}
 
 /***/ },
-/* 178 */
+/* 190 */
 /***/ function(module, exports, __webpack_require__) {
 
 	module.exports = function(module, exports, __weex_require__){'use strict';

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/61ab9f49/ios/playground/bundlejs/component/video-demo.js
----------------------------------------------------------------------
diff --git a/ios/playground/bundlejs/component/video-demo.js b/ios/playground/bundlejs/component/video-demo.js
index f2ada38..018e830 100644
--- a/ios/playground/bundlejs/component/video-demo.js
+++ b/ios/playground/bundlejs/component/video-demo.js
@@ -44,9 +44,9 @@
 /* 0 */
 /***/ function(module, exports, __webpack_require__) {
 
-	var __weex_template__ = __webpack_require__(179)
-	var __weex_style__ = __webpack_require__(180)
-	var __weex_script__ = __webpack_require__(181)
+	var __weex_template__ = __webpack_require__(191)
+	var __weex_style__ = __webpack_require__(192)
+	var __weex_script__ = __webpack_require__(193)
 
 	__weex_define__('@weex-component/a6ac855fc70c0bffbf2b317f9487878f', [], function(__weex_require__, __weex_exports__, __weex_module__) {
 
@@ -2120,7 +2120,19 @@
 /* 176 */,
 /* 177 */,
 /* 178 */,
-/* 179 */
+/* 179 */,
+/* 180 */,
+/* 181 */,
+/* 182 */,
+/* 183 */,
+/* 184 */,
+/* 185 */,
+/* 186 */,
+/* 187 */,
+/* 188 */,
+/* 189 */,
+/* 190 */,
+/* 191 */
 /***/ function(module, exports) {
 
 	module.exports = {
@@ -2178,7 +2190,7 @@
 	}
 
 /***/ },
-/* 180 */
+/* 192 */
 /***/ function(module, exports) {
 
 	module.exports = {
@@ -2190,7 +2202,7 @@
 	}
 
 /***/ },
-/* 181 */
+/* 193 */
 /***/ function(module, exports, __webpack_require__) {
 
 	module.exports = function(module, exports, __weex_require__){'use strict';

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/61ab9f49/ios/playground/bundlejs/component/web-demo.js
----------------------------------------------------------------------
diff --git a/ios/playground/bundlejs/component/web-demo.js b/ios/playground/bundlejs/component/web-demo.js
index 2ae03fe..705f1be 100644
--- a/ios/playground/bundlejs/component/web-demo.js
+++ b/ios/playground/bundlejs/component/web-demo.js
@@ -44,9 +44,9 @@
 /* 0 */
 /***/ function(module, exports, __webpack_require__) {
 
-	var __weex_template__ = __webpack_require__(182)
-	var __weex_style__ = __webpack_require__(183)
-	var __weex_script__ = __webpack_require__(184)
+	var __weex_template__ = __webpack_require__(194)
+	var __weex_style__ = __webpack_require__(195)
+	var __weex_script__ = __webpack_require__(196)
 
 	__weex_define__('@weex-component/1a81fb780319a63605d941949f4ff5d7', [], function(__weex_require__, __weex_exports__, __weex_module__) {
 
@@ -2123,7 +2123,19 @@
 /* 179 */,
 /* 180 */,
 /* 181 */,
-/* 182 */
+/* 182 */,
+/* 183 */,
+/* 184 */,
+/* 185 */,
+/* 186 */,
+/* 187 */,
+/* 188 */,
+/* 189 */,
+/* 190 */,
+/* 191 */,
+/* 192 */,
+/* 193 */,
+/* 194 */
 /***/ function(module, exports) {
 
 	module.exports = {
@@ -2211,7 +2223,7 @@
 	}
 
 /***/ },
-/* 183 */
+/* 195 */
 /***/ function(module, exports) {
 
 	module.exports = {
@@ -2243,7 +2255,7 @@
 	}
 
 /***/ },
-/* 184 */
+/* 196 */
 /***/ function(module, exports, __webpack_require__) {
 
 	module.exports = function(module, exports, __weex_require__){'use strict';
@@ -2253,6 +2265,7 @@
 	module.exports = {
 	    methods: {
 	        goback: function goback() {
+	            var $webview = __weex_require__('@weex-module/webview');
 	            var webElement = this.$el('webview');
 	            $webview.goBack(webElement.ref);
 	        },

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/61ab9f49/ios/playground/bundlejs/error.js
----------------------------------------------------------------------
diff --git a/ios/playground/bundlejs/error.js b/ios/playground/bundlejs/error.js
index 556750f..437063d 100644
--- a/ios/playground/bundlejs/error.js
+++ b/ios/playground/bundlejs/error.js
@@ -44,8 +44,8 @@
 /* 0 */
 /***/ function(module, exports, __webpack_require__) {
 
-	var __weex_template__ = __webpack_require__(185)
-	var __weex_script__ = __webpack_require__(186)
+	var __weex_template__ = __webpack_require__(197)
+	var __weex_script__ = __webpack_require__(198)
 
 	__weex_define__('@weex-component/a62071d3ca8239528c69d72539119e08', [], function(__weex_require__, __weex_exports__, __weex_module__) {
 
@@ -2123,7 +2123,19 @@
 /* 182 */,
 /* 183 */,
 /* 184 */,
-/* 185 */
+/* 185 */,
+/* 186 */,
+/* 187 */,
+/* 188 */,
+/* 189 */,
+/* 190 */,
+/* 191 */,
+/* 192 */,
+/* 193 */,
+/* 194 */,
+/* 195 */,
+/* 196 */,
+/* 197 */
 /***/ function(module, exports) {
 
 	module.exports = {
@@ -2195,7 +2207,7 @@
 	}
 
 /***/ },
-/* 186 */
+/* 198 */
 /***/ function(module, exports, __webpack_require__) {
 
 	module.exports = function(module, exports, __weex_require__){"use strict";

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/61ab9f49/ios/playground/bundlejs/geolocation.js
----------------------------------------------------------------------
diff --git a/ios/playground/bundlejs/geolocation.js b/ios/playground/bundlejs/geolocation.js
index 09b72b4..1eb2a74 100644
--- a/ios/playground/bundlejs/geolocation.js
+++ b/ios/playground/bundlejs/geolocation.js
@@ -45,8 +45,8 @@
 /***/ 0:
 /***/ function(module, exports, __webpack_require__) {
 
-	var __weex_template__ = __webpack_require__(187)
-	var __weex_script__ = __webpack_require__(188)
+	var __weex_template__ = __webpack_require__(199)
+	var __weex_script__ = __webpack_require__(200)
 
 	__weex_define__('@weex-component/c1022e7ee9ce09ed1eadcf7bffe1b341', [], function(__weex_require__, __weex_exports__, __weex_module__) {
 
@@ -71,7 +71,25 @@
 
 /***/ },
 
-/***/ 187:
+/***/ 100:
+/***/ function(module, exports, __webpack_require__) {
+
+	module.exports = { "default": __webpack_require__(101), __esModule: true };
+
+/***/ },
+
+/***/ 101:
+/***/ function(module, exports, __webpack_require__) {
+
+	var core  = __webpack_require__(34)
+	  , $JSON = core.JSON || (core.JSON = {stringify: JSON.stringify});
+	module.exports = function stringify(it){ // eslint-disable-line no-unused-vars
+	  return $JSON.stringify.apply($JSON, arguments);
+	};
+
+/***/ },
+
+/***/ 199:
 /***/ function(module, exports) {
 
 	module.exports = {
@@ -110,12 +128,12 @@
 
 /***/ },
 
-/***/ 188:
+/***/ 200:
 /***/ function(module, exports, __webpack_require__) {
 
 	module.exports = function(module, exports, __weex_require__){"use strict";
 
-	var _stringify = __webpack_require__(189);
+	var _stringify = __webpack_require__(100);
 
 	var _stringify2 = _interopRequireDefault(_stringify);
 
@@ -160,24 +178,6 @@
 	/* generated by weex-loader */
 
 
-/***/ },
-
-/***/ 189:
-/***/ function(module, exports, __webpack_require__) {
-
-	module.exports = { "default": __webpack_require__(190), __esModule: true };
-
-/***/ },
-
-/***/ 190:
-/***/ function(module, exports, __webpack_require__) {
-
-	var core  = __webpack_require__(34)
-	  , $JSON = core.JSON || (core.JSON = {stringify: JSON.stringify});
-	module.exports = function stringify(it){ // eslint-disable-line no-unused-vars
-	  return $JSON.stringify.apply($JSON, arguments);
-	};
-
 /***/ }
 
 /******/ });
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/61ab9f49/ios/playground/bundlejs/hello.js
----------------------------------------------------------------------
diff --git a/ios/playground/bundlejs/hello.js b/ios/playground/bundlejs/hello.js
index f445dee..9ea5b4d 100644
--- a/ios/playground/bundlejs/hello.js
+++ b/ios/playground/bundlejs/hello.js
@@ -45,7 +45,7 @@
 /***/ 0:
 /***/ function(module, exports, __webpack_require__) {
 
-	var __weex_template__ = __webpack_require__(191)
+	var __weex_template__ = __webpack_require__(201)
 
 	__weex_define__('@weex-component/3bfdbb5ef29172e6db527e1bc85ec8fd', [], function(__weex_require__, __weex_exports__, __weex_module__) {
 
@@ -57,7 +57,7 @@
 
 /***/ },
 
-/***/ 191:
+/***/ 201:
 /***/ function(module, exports) {
 
 	module.exports = {

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/61ab9f49/ios/playground/bundlejs/iconfont.js
----------------------------------------------------------------------
diff --git a/ios/playground/bundlejs/iconfont.js b/ios/playground/bundlejs/iconfont.js
index 06176a5..445907f 100644
--- a/ios/playground/bundlejs/iconfont.js
+++ b/ios/playground/bundlejs/iconfont.js
@@ -45,9 +45,9 @@
 /***/ 0:
 /***/ function(module, exports, __webpack_require__) {
 
-	var __weex_template__ = __webpack_require__(192)
-	var __weex_style__ = __webpack_require__(193)
-	var __weex_script__ = __webpack_require__(194)
+	var __weex_template__ = __webpack_require__(202)
+	var __weex_style__ = __webpack_require__(203)
+	var __weex_script__ = __webpack_require__(204)
 
 	__weex_define__('@weex-component/c90fb40e28668dc487c3cb9e5dc4fabd', [], function(__weex_require__, __weex_exports__, __weex_module__) {
 
@@ -66,7 +66,7 @@
 
 /***/ },
 
-/***/ 192:
+/***/ 202:
 /***/ function(module, exports) {
 
 	module.exports = {
@@ -113,7 +113,7 @@
 
 /***/ },
 
-/***/ 193:
+/***/ 203:
 /***/ function(module, exports) {
 
 	module.exports = {
@@ -141,7 +141,7 @@
 
 /***/ },
 
-/***/ 194:
+/***/ 204:
 /***/ function(module, exports) {
 
 	module.exports = function(module, exports, __weex_require__){'use strict';