123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- Group = function(router, options, parent) {
- options = options || {};
- if (options.prefix && !/^\/.*/.test(options.prefix)) {
- var message = "group's prefix must start with '/'";
- throw new Error(message);
- }
- this._router = router;
- this.prefix = options.prefix || '';
- this.name = options.name;
- this.options = options;
- this._triggersEnter = options.triggersEnter || [];
- this._triggersExit = options.triggersExit || [];
- this._subscriptions = options.subscriptions || Function.prototype;
- this.parent = parent;
- if (this.parent) {
- this.prefix = parent.prefix + this.prefix;
- this._triggersEnter = parent._triggersEnter.concat(this._triggersEnter);
- this._triggersExit = this._triggersExit.concat(parent._triggersExit);
- }
- };
- Group.prototype.route = function(pathDef, options, group) {
- options = options || {};
- if (!/^\/.*/.test(pathDef)) {
- var message = "route's path must start with '/'";
- throw new Error(message);
- }
- group = group || this;
- pathDef = this.prefix + pathDef;
- var triggersEnter = options.triggersEnter || [];
- options.triggersEnter = this._triggersEnter.concat(triggersEnter);
- var triggersExit = options.triggersExit || [];
- options.triggersExit = triggersExit.concat(this._triggersExit);
- return this._router.route(pathDef, options, group);
- };
- Group.prototype.group = function(options) {
- return new Group(this._router, options, this);
- };
- Group.prototype.callSubscriptions = function(current) {
- if (this.parent) {
- this.parent.callSubscriptions(current);
- }
- this._subscriptions.call(current.route, current.params, current.queryParams);
- };
|