Skip to content

Commit 05a3396

Browse files
committed
- add merge class api
- support multiple configuration in constructor arguments. - bump version
1 parent dad51be commit 05a3396

File tree

9 files changed

+253
-169
lines changed

9 files changed

+253
-169
lines changed

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,12 @@
77
- remove `setContext()` and `setCtx()`, in favor of `ctx()`.
88

99

10+
## v1.5.0
11+
12+
- add `merge` class api
13+
- support multiple configuration in constructor arguments.
14+
15+
1016
## v1.4.3
1117

1218
- fix bug: `''` treated as undefined and thus can't be mapped to a node, causing node not found issue.

README.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,12 @@ view by default will be rendered after initialized, but you can render it again
3030

3131
view.render!
3232

33+
You can merge multiple configs by constructing ldview with multiple object:
34+
35+
view = new ldview({root: document.body}, {handler: {...}}, {text: {...}});
36+
37+
You can also use `ldview.merge` to manually combine the view configuration object. see `Class API` for mode detail.
38+
3339

3440
### loop with ld-each
3541

@@ -362,6 +368,11 @@ Or, use `template` instead, which is by default scoped:
362368
check `web/src/pug/scope/index.ls` for a working example of local views.
363369

364370

371+
## Class API
372+
373+
- `merge(a, b, ...)`: merge view config objects and returns the merged result.
374+
375+
365376
## License
366377

367378
MIT

dist/index.js

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@
1010
ldview = function(opt){
1111
var names, i$, ref$, k, v, len$, list, j$, len1$, it, res$, this$ = this;
1212
opt == null && (opt = {});
13+
if (arguments.length > 1) {
14+
opt = ldview.merge.apply(ldview, Array.from(arguments));
15+
}
1316
this.evtHandler = {};
1417
this._ctxs = opt.ctxs || null;
1518
this.views = [this].concat(opt.baseViews || []);
@@ -586,6 +589,31 @@
586589
return results$;
587590
}
588591
});
592+
ldview.merge = function(){
593+
return ldview._merge.apply(ldview, [{}].concat(Array.from(arguments)));
594+
};
595+
ldview._merge = function(){
596+
var list, a, i$, len$, b, k;
597+
list = Array.from(arguments);
598+
if (list.length < 2) {
599+
return list[0];
600+
}
601+
a = list.splice(0, 1)[0];
602+
for (i$ = 0, len$ = list.length; i$ < len$; ++i$) {
603+
b = list[i$];
604+
for (k in b) {
605+
if (!b[k]) {
606+
continue;
607+
}
608+
if (typeof b[k] === 'object' && b[k].constructor === Object) {
609+
ldview._merge(a[k] || (a[k] = {}), b[k]);
610+
} else {
611+
a[k] = b[k];
612+
}
613+
}
614+
}
615+
return a;
616+
};
589617
if (typeof module != 'undefined' && module !== null) {
590618
module.exports = ldview;
591619
}

dist/index.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)