Skip to content

Commit 9aeb9ad

Browse files
feat(ResolveInjector): create a simplified API for injecting a function with locals within a ResolveContext
1 parent 0cef86e commit 9aeb9ad

File tree

3 files changed

+17
-4
lines changed

3 files changed

+17
-4
lines changed

src/path/interface.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import ParamValues from "../params/paramValues";
1010

1111
import {IResolvables} from "../resolve/interface";
1212
import ResolveContext from "../resolve/resolveContext";
13-
13+
import ResolveInjector from "../resolve/resolveInjector";
1414

1515
/** Base data (contains a state) for a node in a Path */
1616
export interface INode {
@@ -38,6 +38,7 @@ export interface IResolvePath extends Path<IResolveNode> {}
3838
/** Contains IResolveNode data, plus a ResolveContext and ParamsValues (bound to a full path) for the node, */
3939
export interface ITransNode extends IResolveNode {
4040
resolveContext: ResolveContext;
41+
resolveInjector: ResolveInjector;
4142
views: ViewConfig[];
4243
paramValues: ParamValues;
4344
}

src/path/pathFactory.ts

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
import {map, extend, pairs, prop, pick, omit, not, curry} from "../common/common";
22

3-
import {runtime} from "../common/angular1";
4-
53
import {IRawParams} from "../params/interface";
64
import ParamValues from "../params/paramValues";
75

@@ -15,9 +13,9 @@ import Path from "../path/path";
1513

1614
import Resolvable from "../resolve/resolvable";
1715
import ResolveContext from "../resolve/resolveContext";
18-
import PathContext from "../resolve/pathContext";
1916

2017
import {ViewConfig} from "../view/view";
18+
import ResolveInjector from "../resolve/resolveInjector";
2119

2220
/**
2321
* This class contains functions which convert TargetStates, Nodes and Paths from one type to another.
@@ -126,6 +124,7 @@ export default class PathFactory {
126124
// Attach views to each node
127125
transPath.nodes().forEach((node: ITransNode) => {
128126
node.resolveContext = resolveContext.isolateRootTo(node.state);
127+
node.resolveInjector = new ResolveInjector(node.resolveContext, node.state);
129128
node.paramValues = paramValues.$isolateRootTo(node.state.name);
130129
node.views = makeViews(node);
131130
}

src/resolve/resolveInjector.ts

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import ResolveContext from "../resolve/resolveContext";
2+
import {IState} from "../state/interface";
3+
4+
export default class ResolveInjector {
5+
constructor(private _resolveContext: ResolveContext, private _state: IState) { }
6+
/** Invokes an annotated function in the context of the toPath */
7+
invokeLater(injectedFn, locals) {
8+
return this._resolveContext.invokeLater(this._state, injectedFn, locals);
9+
}
10+
invokeNow(injectedFn, locals) {
11+
return this._resolveContext.invokeNow(this._state, injectedFn, locals);
12+
}
13+
}

0 commit comments

Comments
 (0)