2015-10-11 3 views
1

Я пытаюсь переключить функциональность в зависимости от типа устройства. У меня есть вкладка настроек как интерактивная. В настольной версии ngClick должен перенаправить на URL-адрес по умолчанию. Однако в мобильной версии тот же самый щелчок ссылки откроет модальный. я сделал что-то вроде этогоТернарное состояние на ngClick

settings.Html -

<li id="btn-alerts" ng-click="showSettingsModal ? openModal() : redirectToURL()"> 

settings.directive -

 $scope.showPharmacySettingsModal = false; 
     if (deviceWidth < 481) {  
      currentDevice = 'mobile'; 
      $scope.showSettingsModal = true; 
     } 
     $scope.redirectTo = function(){ 
     $window.location.href = url; 
     } 

мне было интересно, если это хороший способ проверить устройство и выполнить какое-либо действие на ng- нажмите кнопку. Есть ли лучший способ предложить?

Благодаря

+1

Ваша логика не должна быть внутри зрения, и вы пропускаете ':' в вашем тройном состоянии , между 'openModal()' и 'redirectToURL()'. –

+2

Я бы предложил переместить логику решения в функцию обработчика кликов. И решите там, если модальный должен быть открыт и т. Д. –

+0

@AlexanderBondar: спасибо. Можно ли проверить внутреннюю ширину для проверки типа устройства? – nikitha

ответ

0

нг щелкните предназначен для работы с функцией. Я бы предложил создать метод в своей области действия, который выполняет то, что делает тернарное условие, и вызывает это в ng-click.

<li id="btn-alerts" ng-click="chooseMethod()"> 

Тогда на Вашей области:

$scope.chooseMethod = function(){ 
     showSettingsModal ? openModal() : redirectToURL(); 
} 
1

Попробуйте это:

ng-click="(AppliedApps!=null && Collapse('CollapsedAppliedApplications')) || (AppliedApps.length==0 && Collapse('CollapsedAppliedApplications'))"> 
+0

Хотя этот код может ответить на вопрос, предоставление дополнительного контекста относительно того, как и/или почему оно решает проблему, улучшит долгосрочную ценность ответа. –

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