Creates a [[UrlRule]]

Creates a [[UrlRule]] from a:

  • string
  • [[UrlMatcher]]
  • RegExp
  • [[StateObject]]

Constructors

Properties

routerGlobals: any
stateService: any
urlService: any

Methods

  • A UrlRule which matches based on a regular expression

    The handler may be either a [[UrlRuleHandlerFn]] or a string.

    If handler is a function, the function is invoked with:

    • regexp match array (from regexp)
    • url: the current Url ([[UrlParts]])
    • router: the router object ([[UIRouter]])
    var rule = factory.fromRegExp(/^/foo/(bar|baz)$/, match => "/home/" + match[1])
    var match = rule.match('/foo/bar'); // results in [ '/foo/bar', 'bar' ]
    var result = rule.handler(match); // '/home/bar'

    If handler is a string, the url is replaced by the string when the Rule is invoked. The string is first interpolated using string.replace() style pattern.

    var rule = factory.fromRegExp(/^/foo/(bar|baz)$/, "/home/$1")
    var match = rule.match('/foo/bar'); // results in [ '/foo/bar', 'bar' ]
    var result = rule.handler(match); // '/home/bar'

    Parameters

    • regexp: any
    • handler: any

    Returns BaseUrlRule & {
        regexp: any;
        type: string;
    }

  • A UrlRule which matches a state by its url

    var rule = factory.fromState($state.get('foo'), router);
    var match = rule.match('/foo/123/456'); // results in { fooId: '123', barId: '456' }
    var result = rule.handler(match);
    // Starts a transition to 'foo' with params: { fooId: '123', barId: '456' }

    Parameters

    • stateOrDecl: any
    • stateService: any
    • globals: any

    Returns BaseUrlRule & {
        matchPriority: ((params: any) => number);
        type: string;
        urlMatcher: any;
    } & {
        state: any;
        type: string;
    }

  • A UrlRule which matches based on a UrlMatcher

    The handler may be either a string, a [[UrlRuleHandlerFn]] or another [[UrlMatcher]]

    If handler is a function, the function is invoked with:

    • matched parameter values ([[RawParams]] from [[UrlMatcher.exec]])
    • url: the current Url ([[UrlParts]])
    • router: the router object ([[UIRouter]])
    var urlMatcher = $umf.compile("/foo/:fooId/:barId");
    var rule = factory.fromUrlMatcher(urlMatcher, match => "/home/" + match.fooId + "/" + match.barId);
    var match = rule.match('/foo/123/456'); // results in { fooId: '123', barId: '456' }
    var result = rule.handler(match); // '/home/123/456'

    If handler is a UrlMatcher, the handler matcher is used to create the new url. The handler UrlMatcher is formatted using the matched param from the first matcher. The url is replaced with the result.

    var urlMatcher = $umf.compile("/foo/:fooId/:barId");
    var handler = $umf.compile("/home/:fooId/:barId");
    var rule = factory.fromUrlMatcher(urlMatcher, handler);
    var match = rule.match('/foo/123/456'); // results in { fooId: '123', barId: '456' }
    var result = rule.handler(match); // '/home/123/456'

    Parameters

    • urlMatcher: any
    • handler: any

    Returns BaseUrlRule & {
        matchPriority: ((params: any) => number);
        type: string;
        urlMatcher: any;
    }