如何将文本框的内容作为输入参数而不是 $scope 变量传递给 angular js?

How do I pass the contents of a textbox into angular js as an input parameter, rather than a $scope variable?

目前,我知道如何从文本框中收集输入并在 $scope 变量中使用它。但是,如果我不想使用 $scope 变量怎么办?如果我只是想将输入作为参数传递给函数怎么办?

当前:

我有一些 JSP 看起来像这样:

<textarea
  required="true"
  spellcheck="on"
  data-ng-model="editTools.productDescription"
  rows="4"
>
</textarea>

我在 JSP 中也有一个按钮调用 Angular JS 中的函数:

<button 
  id="description-submit-button"
  data-ng-click="mySpecialFunction()"
  buttonType="${'primary'}"
  htmlButtonType="${'button'}"
>
  <text>"Submit"</text>
</button>

所以,我知道这行得通。我正在为 $scope.editTools.productDescription 赋值,然后 mySpecialFunction() 使用该值。

但是如果不使用 $scope 变量,我如何完成同样的事情呢?我希望能够说 data-ng-click="mySpecialFunction({the stuff the user typed in the text box})"

这可能吗?怎么样?

您实际上不必在控制器中声明您的模型变量。您可以将 textarea 更改为此,以便模型为 myVariable(您可以随意命名):

<textarea
    required="true"
    spellcheck="on"
    data-ng-model="myVariable"
    rows="4">
</textarea>

然后您可以将 myVariable 直接传递到 HTML 中的 mySpecialFunction 调用,如下所示:

<button 
  id="description-submit-button"
  data-ng-click="mySpecialFunction(myVariable)"
  buttonType="${'primary'}"
  htmlButtonType="${'button'}"
>
  <text>"Submit"</text>
</button>

现在在你的控制器中,你的函数看起来像这样:

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

但请注意,angularjs 实际上会在幕后将 myVariable 添加到 $scope,因此如果您真的想要,您仍然可以使用 $scope.myVariable 在你的控制器中。