Я искал решение для этого решения и был в тупике. Я немного нового для AngularJS, поэтому я не знаю всех хороших трюков, которые у него есть. У меня есть многочастная форма: HTTP GET ed в конце, используя ng-href. Вот фрагмент кода, который представляет все.Ограничение ng-href путем проверки в AngularJS
<a ng-href="#/report/{{ctrl.model}}" ng-click="ctrl.createReport()">Finish</a>
теперь я столкнулся с добавлением валидаций к этой форме, и я хочу, чтобы предотвратить соединение от соблюдаются, если проверка не пройдена. Логика проверки содержится в функции контроллера, функция возвращает истинную или ложную базу в результате проверки.
К сожалению, этот фрагмент кода является частью большой реализации, разработанной кем-то еще. Я просто хочу добавить часть проверки, не изменяя слишком много логики в коде.
Есть ли способ поставить условие на ng-href
? Таким образом, когда нажата кнопка Finish, браузер будет следовать только по URL-адресу, если проверка прошла. В противном случае, есть ли в любом случае выполнить то же самое GET в контроллере? Я посмотрел на использование $http.get()
и $window.location.href
. Первый кажется AJAX, который не перенаправляет браузер на URL-адрес имени. Последнее, я не знаю, как развернуть ctrl.model
в строку GET.
Любые мысли, идеи, предложения были бы весьма признательны. Благодаря!!!
Решение Используется
HTML:
<a data-ng-click="ctrl.createReport()">Finish</a>
JS:
if (validate()) {
$location.path('/report/' + angular.toJson(self.model, false));
}
Привет, Кент, спасибо за ответ. Я пробовал это изначально, я думал, что это будет самый простой и простой код. Однако служба определения местоположения $ не будет конвертировать «модель» в строку JSON правильно в URL. Вот что я получаю, когда использую ваш подход: 'http: // localhost/TestApp/#/report /% 5Bobject% 20Object% 5D' – cycotron69
Хорошо, я смог получить правильную строку json с помощью' angular.toJson () '. Работает сейчас, спасибо! – cycotron69
Извините, я не понимал, что 'model' был объектом. –