#angularjs #angularjs-directive
#angularjs #angularjs-директива
Вопрос:
Предположим, у меня есть массив myArray
и кнопка.
<button>Click</button>
И я хочу использовать Array.prototype.some / every, чтобы отключить кнопку, используя директиву ng-disabled . Например:
<button ng-disabled="myArray.some(x => x == 1)">Click</button>
Это выдает Token '>' not a primary expression at column of the expression
ошибку.
Почему это происходит? Я делаю что-то не так?
Комментарии:
1. Да: вы используете функцию со стрелкой внутри выражения AngularJS, а угловые выражения это не поддерживают. Вызовите функцию вашей области / контроллера и поместите туда код JavaScript.
2. @JBNizet Точно, я действительно вызвал функцию из своего контроллера… но я просто хочу понять… Угловые выражения не поддерживают функции со стрелками… есть ли причина для этого?
3. Ну, во-первых, когда были разработаны выражения AngularJS, функций со стрелками не существовало. Другая причина заключается в том, что это значительно усложняет отрицательный выигрыш, поскольку плохой практикой является добавление слишком большого количества логики в представление.
4. Если вы хотите запустить более сложный код JavaScript, вы должны сделать его методом контроллера и вызвать метод из вашего представления. Прочитайте руководство разработчика AngularJS — AngularJS Ecpressions vs JS Expressions .
5. Спасибо, @georgeawg, это имеет смысл.
You cannot declare functions in an AngularJS expression, even inside ng-init directive.
Ответ №1:
Как говорится в руководстве разработчика AngularJS, нельзя объявлять функции внутри выражений AngularJS.
Нет объявлений функций:Вы не можете объявлять функции в выражении AngularJS, даже внутри директивы ng-init .