Как реагировать на ссылку, загружающую тот же URL в AngularJS? - PullRequest
0 голосов
/ 25 апреля 2019

У меня есть форма на странице, которая связана из моего меню с помощью обычного тега привязки.

Теперь, если по этому пункту меню нажимают снова, когда я уже на этой странице, я хочу проверитьнесохраненные изменения и либо показывают модальный режим, чтобы спросить, действительно ли вы хотите перезагрузить компьютер, если есть несохраненные изменения, либо просто сбросьте страницу, если их нет.

Как мне поступить, чтобы сделать это в AngularJS?Желательно, чтобы элемент меню оставался обычным тегом привязки.

1 Ответ

0 голосов
/ 25 апреля 2019

Решение зависит от того, планируете ли вы повторно использовать эту функцию в другом месте вашего приложения или ограничить ее только этой единственной формой.

Если вы планируете повторно использовать это в своем приложении и выполнять проверку каждый раз, когда пользователь пытается перейти по ссылке (из меню), по которой он уже включен, вы всегда можете сравнить URL-адрес с текущим URL-адресом. Этот код не идеален, но он дает идею, сравните целевой URL с текущим.

т.е.

//not sure if you're using a router or hardcoded the links, however I'd recommend an approach that isn't hard coded links. This array just mimics the definitions of routes.
$scope.urlDictionary = [
{label:"Page 1", url: "/page1"},
{label:"Page 2", url: "/page2"},
]


$scope.goToURL = function(url){
  //check if the current url is equal to the url of which they want to navigate to
  if($location.url == url){
    //prompt modal to check if they actually want to navigate away
    //if(yes) $location.url = url;
    //else return;
  }
  //go to the url if it isnt equal to the current url
  else{
    $location.url = url;
  }
}
<!-- menu, just used ul to get the idea across-->
<ul>
  <li ng-repeat="u in urlDictionary" ng-click="goToURL(u.url)">{{u.label}}</li>
</ul>

Если вы хотите ограничить эту функциональность только контроллером этой формы, я бы порекомендовал проверить этот пост на предмет идеи, как это сделать: Отображение предупреждения в angularjs, когда пользователь покидает страницу

...