Как передать содержимое текстового поля в angular js в качестве входного параметра, а не переменной $scope?

#javascript #html #angularjs #jsp

Вопрос:

В настоящее время я знаю, как собирать входные данные из текстового поля и использовать их в $scope переменной. Но что, если я не хочу использовать $scope переменную? Что делать, если я просто хочу передать входные данные в качестве параметра функции?

в настоящий момент:

У меня есть JSP, который выглядит так:

 lt;textarea  required="true"  spellcheck="on"  data-ng-model="editTools.productDescription"  rows="4" gt; lt;/textareagt;  

У меня также есть кнопка в JSP, которая вызывает функцию в Angular JS:

 lt;button   id="description-submit-button"  data-ng-click="mySpecialFunction()"  buttonType="${'primary'}"  htmlButtonType="${'button'}" gt;  lt;textgt;"Submit"lt;/textgt; lt;/buttongt;  

Итак, я понимаю, что это работает. Я присваиваю значение $scope.editTools.productDescription , а затем mySpecialFunction() использую это значение.

Но как бы я сделал то же самое без использования $scope переменной? Я хотел бы иметь возможность сказать что-то вроде data-ng-click="mySpecialFunction({the stuff the user typed in the text box})"

Возможно ли это? Как?

Ответ №1:

На самом деле вам не нужно объявлять переменную модели в контроллере. Вы можете изменить свой textarea на этот, чтобы модель была myVariable (вы можете называть ее как хотите):

 lt;textarea  required="true"  spellcheck="on"  data-ng-model="myVariable"  rows="4"gt; lt;/textareagt;  

Затем вы можете перейти myVariable непосредственно к mySpecialFunction вызову в HTML, как это:

 lt;button   id="description-submit-button"  data-ng-click="mySpecialFunction(myVariable)"  buttonType="${'primary'}"  htmlButtonType="${'button'}" gt;  lt;textgt;"Submit"lt;/textgt; lt;/buttongt;  

Теперь в вашем контроллере ваша функция будет выглядеть примерно так:

 $scope.mySpecialFunction = function (value) {  // value === myVariable  // do something with it here };  

Но просто хочу отметить, что angularjs на самом деле добавляет myVariable к $scope закулисью, так что, если бы вы действительно захотели, вы все равно могли бы получить доступ к значению $scope.myVariable в своем контроллере.

Комментарии:

1. Спасибо, это решает все, о чем я думал!

2. Также: похоже, что нет способа передать переменную в функцию в качестве параметра, не добавляя ее также $scope за кулисы?