Repository: incubator-weex Updated Branches: refs/heads/master aaa1bdbad -> 30716b672
+ [jsfm] Support batch update styles and attributes Add `setAttrs` and `setStyles` method on `Element.prototype` to support batch update styles and attributes. This feature can be used in the DSL framework to optimize performance. Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/30716b67 Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/30716b67 Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/30716b67 Branch: refs/heads/master Commit: 30716b672b7ba951796b1b17385e484aaa68f9d9 Parents: aaa1bdb Author: Hanks <zhanghan...@gmail.com> Authored: Tue Oct 24 16:18:35 2017 +0800 Committer: Hanks <zhanghan...@gmail.com> Committed: Tue Oct 24 16:18:35 2017 +0800 ---------------------------------------------------------------------- html5/runtime/vdom/Element.js | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/30716b67/html5/runtime/vdom/Element.js ---------------------------------------------------------------------- diff --git a/html5/runtime/vdom/Element.js b/html5/runtime/vdom/Element.js index 15837f2..01e3045 100644 --- a/html5/runtime/vdom/Element.js +++ b/html5/runtime/vdom/Element.js @@ -299,6 +299,24 @@ export default class Element extends Node { } /** + * Set batched attributes. + * @param {object} batchedAttrs + * @param {boolean} silent + */ + setAttrs (batchedAttrs, silent) { + // TODO: validate batched attributes + Object.assign(this.attr, batchedAttrs) + const taskCenter = getTaskCenter(this.docId) + if (!silent && taskCenter) { + taskCenter.send( + 'dom', + { action: 'updateAttrs' }, + [this.ref, batchedAttrs] + ) + } + } + + /** * Set a style property, and decide whether the task should be send to native. * @param {string} key * @param {string | number} value @@ -322,6 +340,24 @@ export default class Element extends Node { } /** + * Set batched style properties. + * @param {object} batchedStyles + * @param {boolean} silent + */ + setStyles (batchedStyles, silent) { + // TODO: validate batched styles + Object.assign(this.style, batchedStyles) + const taskCenter = getTaskCenter(this.docId) + if (!silent && taskCenter) { + taskCenter.send( + 'dom', + { action: 'updateStyle' }, + [this.ref, batchedStyles] + ) + } + } + + /** * Set style properties from class. * @param {object} classStyle */