Skip to content

Commit 0f0a806

Browse files
committed
Use a try-catch to test is uiSrefActive is a valid expression
1 parent 6ab4472 commit 0f0a806

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed

src/stateDirectives.js

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -289,14 +289,20 @@ function $StateRefActiveDirective($state, $stateParams, $interpolate) {
289289
return {
290290
restrict: "A",
291291
controller: ['$scope', '$element', '$attrs', '$timeout', function ($scope, $element, $attrs, $timeout) {
292-
var states = [], activeClasses = {}, activeEqClass;
292+
var states = [], activeClasses = {}, activeEqClass, uiSrefActive;
293293

294294
// There probably isn't much point in $observing this
295295
// uiSrefActive and uiSrefActiveEq share the same directive object with some
296296
// slight difference in logic routing
297297
activeEqClass = $interpolate($attrs.uiSrefActiveEq || '', false)($scope);
298298

299-
var uiSrefActive = $scope.$eval($attrs.uiSrefActive) || $interpolate($attrs.uiSrefActive || '', false)($scope);
299+
try {
300+
uiSrefActive = $scope.$eval($attrs.uiSrefActive);
301+
} catch (e) {
302+
// Do nothing. uiSrefActive is not a valid expression.
303+
// Fall back to using $interpolate below
304+
}
305+
uiSrefActive = uiSrefActive || $interpolate($attrs.uiSrefActive || '', false)($scope);
300306
if (isObject(uiSrefActive)) {
301307
forEach(uiSrefActive, function(stateOrName, activeClass) {
302308
if (isString(stateOrName)) {

0 commit comments

Comments
 (0)