2015-12-03 5 views
1

У меня в контроллере есть следующее:Ng-класс - применяется, если URL-адрес содержит определенную строку символов

$scope.location = $location.absUrl(); 

Это дает мне полный URL просматриваемой текущей страницы. В моем HTML я хотел бы применить класс, если URL-адрес содержит определенный параметр.

ng-class="{'location': location == } 

Я не уверен, что положить после: оценить выражение. url может включать строку, такую ​​как 'requestId = 555'

Как написать выражение, чтобы, если URL-адрес включает эту строку, класс затем применяется?

+0

из 'requestId = 555', что вы хотели поместить в' ng-class'? Не понимаю этого ясно. –

+0

@PankajParkar URL-адрес может содержать параметр 'requestId = 555', и если я хочу применить класс к элементу HTML. – Flignats

ответ

1

Если вы используете UI-маршрутизатор

Вы можете иметь состояние параметров для строки запроса. Если вы введете $stateParams в свой контроллер, вы можете получить доступ к набору $scope.requestId = $stateParams.requestId. На ваш взгляд, вы можете привязать его к requestId. Для настройки состояния:

$stateProvider.state({ 
    url: '/someurl?requestId', 
    templateUrl: 'someTemplate.tpl.html', 
    controller: 'SomeController' 
}); 

См. ui-router.

Если вы хотите обычного ванильного JS

В соответствии с этим весьма принято answer, вы можете получить значение строки запроса ключа с помощью следующей функции:

function getParameterByName(name) { 
    name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]"); 
    var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"), 
     results = regex.exec(location.search); 
    return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " ")); 
} 

Вы можете установить $scope.requestId = getParameterByName('requestId'); и привязать его к шаблону.

+0

К сожалению, я не использую ui-router в приложении. – Flignats

+0

@Flignats - добавлен код vanillajs. –

+0

Мне нужно было сделать небольшую настройку, чтобы привести ее в угловой контроллер: $ scope.getParameterByName = function (name) { name = name.replace (/ [\ [] /, "\\ ["). Replace (/ [\]] /, "\\]"); var regex = new RegExp ("[\\? &]" + Name + "= ([^ & #] *)"), results = regex.exec (location.search); Результаты возврата === null? "": decodeURIComponent (результаты [1] .replace (/ \ +/g, "")); }; – Flignats

Смежные вопросы