Skip to content

Commit aa2d470

Browse files
refactor(ui-sref): consolidate ui-sref/state target state processing
1 parent cae4dc4 commit aa2d470

File tree

1 file changed

+19
-13
lines changed

1 file changed

+19
-13
lines changed

src/ng1/directives/stateDirectives.ts

+19-13
Original file line numberDiff line numberDiff line change
@@ -158,22 +158,24 @@ let uiSref = ['$uiRouter', '$timeout',
158158
restrict: 'A',
159159
require: ['?^uiSrefActive', '?^uiSrefActiveEq'],
160160
link: function (scope: IScope, element: IAugmentedJQuery, attrs: any, uiSrefActive: any) {
161-
let ref = parseStateRef(attrs.uiSref);
162161
let type = getTypeInfo(element);
163162
let active = uiSrefActive[1] || uiSrefActive[0];
164163
let unlinkInfoFn: Function = null;
165164
let hookFn;
166165

167-
let rawDef = { uiState: ref.state } as Def;
166+
let rawDef = {} as Def;
168167
let getDef = () => processedDef($state, element, rawDef);
168+
169+
let ref = parseStateRef(attrs.uiSref);
170+
rawDef.uiState = ref.state;
169171
rawDef.uiStateOpts = attrs.uiSrefOpts ? scope.$eval(attrs.uiSrefOpts) : {};
170172

171-
let update = function () {
173+
function update() {
172174
let def = getDef();
173175
if (unlinkInfoFn) unlinkInfoFn();
174176
if (active) unlinkInfoFn = active.$$addStateInfo(def.uiState, def.uiStateParams);
175-
if (def.href !== null) attrs.$set(type.attr, def.href);
176-
};
177+
if (def.href != null) attrs.$set(type.attr, def.href);
178+
}
177179

178180
if (ref.paramExpr) {
179181
scope.$watch(ref.paramExpr, function (val) {
@@ -182,6 +184,7 @@ let uiSref = ['$uiRouter', '$timeout',
182184
}, true);
183185
rawDef.uiStateParams = angular.copy(scope.$eval(ref.paramExpr));
184186
}
187+
185188
update();
186189

187190
scope.$on('$destroy', <any> $uiRouter.stateRegistry.onStatesChanged(update));
@@ -237,20 +240,22 @@ let uiState = ['$uiRouter', '$timeout',
237240
restrict: 'A',
238241
require: ['?^uiSrefActive', '?^uiSrefActiveEq'],
239242
link: function (scope: IScope, element: IAugmentedJQuery, attrs: any, uiSrefActive: any) {
240-
var type = getTypeInfo(element);
241-
var active = uiSrefActive[1] || uiSrefActive[0];
243+
let type = getTypeInfo(element);
244+
let active = uiSrefActive[1] || uiSrefActive[0];
245+
let unlinkInfoFn: Function = null;
246+
let hookFn;
247+
248+
let rawDef = {} as Def;
249+
let getDef = () => processedDef($state, element, rawDef);
250+
242251
let inputAttrs = ['uiState', 'uiStateParams', 'uiStateOpts'];
243252
let watchDeregFns = inputAttrs.reduce((acc, attr) => (acc[attr] = noop, acc), {});
244-
var unlinkInfoFn: Function = null;
245-
var hookFn;
246-
var rawDef = {} as Def;
247-
let getDef = () => processedDef($state, element, rawDef);
248253

249254
function update() {
250255
let def = getDef();
251256
if (unlinkInfoFn) unlinkInfoFn();
252257
if (active) unlinkInfoFn = active.$$addStateInfo(def.uiState, def.uiStateParams);
253-
if (def.href) attrs.$set(type.attr, def.href);
258+
if (def.href != null) attrs.$set(type.attr, def.href);
254259
}
255260

256261
inputAttrs.forEach((field) => {
@@ -265,9 +270,10 @@ let uiState = ['$uiRouter', '$timeout',
265270
})
266271
});
267272

273+
update();
274+
268275
scope.$on('$destroy', <any> $uiRouter.stateRegistry.onStatesChanged(update));
269276
scope.$on('$destroy', <any> $uiRouter.transitionService.onSuccess({}, update));
270-
update();
271277

272278
if (!type.clickable) return;
273279
hookFn = clickHook(element, $state, $timeout, type, getDef);

0 commit comments

Comments
 (0)