Подтвердить что ты не робот

If в ng-click

Есть ли способ установить условие внутри ng-click? Здесь я хочу, чтобы форма не была отправлена, если есть какие-либо ошибки формы, но затем я получил исключение синтаксического анализа.

 <input  ng-click="{{if(profileForm.$valid) updateMyProfile()}}" name="submit" id="submit" value="Save" class="submit" type="submit">

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

4b9b3361

Ответ 1

Не помещайте выражение условий в шаблон.

Сделайте это на контроллере.

Шаблон:

<input ng-click="check(profileForm.$valid)" name="submit" 
       id="submit" value="Save" class="submit" type="submit">

Контроллер:

$scope.check = function(value) {
    if (value) {
       updateMyProfile();
    }
}

Ответ 2

Это может быть бесполезно и бесполезно, но, как и javascript, вам не нужно использовать тройную версию, как было предложено выше, в инструкции ng-click. Вы также должны иметь возможность использовать ленивый синтаксис оценки ( "или умереть" ). Итак, для вашего примера выше:

<input  ng-click="{{if(profileForm.$valid) updateMyProfile()}}" name="submit" id="submit" value="Save" class="submit" type="submit">

станет:

<input  ng-click="profileForm.$valid && updateMyProfile()" name="submit" id="submit" value="Save" class="submit" type="submit">

В этом случае, если профиль недействителен, ничего не происходит, иначе вызывается updateMyProfile(). Как и в ссылке @falinsky выше.

Ответ 3

Вот хак, который я обнаружил, что может сработать для вас, хотя его не очень красиво, и я лично смущен, чтобы использовать такую ​​строку кода:

ng-click="profileForm.$valid ? updateMyProfile() : alert('failed')"

Теперь вы должны думать: "Но я не хочу, чтобы он предупреждал (" не удалось "), если мой profileForm недействителен. Хорошо, что уродливая часть. Для меня, независимо от того, что я вложил в предложение else этого тройного выражения, никогда не выполняется.

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

Ответ 4

Если вам нужно сделать это таким образом, вот несколько способов сделать это:

Отключение кнопки с ng-disabled

На сегодняшний день это самое простое решение.

<input ng-disabled="!profileForm.$valid" ng-click="updateMyProfile()" ... >

Скрытие кнопки (и показ чего-то еще) с помощью ng-if

Может быть, хорошо, если вы показываете/скрываете некоторую сложную разметку.

<div ng-if="profileForm.$valid">
    <input ng-click="updateMyProfile()" ... >
</div>
<div ng-if="!profileForm.$valid">
    Sorry! We need all form fields properly filled out to continue.
</div>

(помните, что нет ng-else...)

Соединение обоих

Общение с пользователем, где находится кнопка (он больше не будет ее искать), но объясните, почему его нельзя нажать.

<input ng-disabled="!profileForm.$valid" ng-click="updateMyProfile()" ... >
<div ng-if="!profileForm.$valid">
    Sorry! We need all form fields properly filled out to continue.
</div>

Ответ 5

Мы можем добавить событие ng-click условно, не используя отключенный класс.

HTML:

  <input ng-click="profileForm.$valid && updateMyProfile()" name="submit" id="submit" value="Save" class="submit" type="submit">

Ответ 7

Вы можете поместить условные обозначения внутри тегов. Попробуйте:

ng-class="{true:'active',false:'disable'}[list_status=='show']"