【问题标题】:append a textarea input type with a string on ng-click AngularJS在 ng-click AngularJS 上附加一个带有字符串的 textarea 输入类型
【发布时间】:2015-09-16 15:36:54
【问题描述】:

我在使用 ng-click 将数据附加到 textarea 输入字段时遇到问题。我正在尝试实现一个下拉菜单,将样板数据添加到文本区域,但我希望能够选择多个样板数据到文本区域。

这是我对 html 的看法:

<div id="specialinstructions-group" class="form-group">
  <div class="dropdown">
    <label data-toggle="dropdown" class="dropdown-toggle">Special Flash Instructions<b class="caret"></b></label>
      <ul class="dropdown-menu">
        <li ng-click="addSpecialInstructions('Please unplug the system for 10 seconds after the BIOS and EC update completes.')"><span>10 Second Powercycle</span></li>
      </ul>
    <textarea name="FlashInstructions" class="form-control" id="FlashInstructions" rows="3" ng-model="formData.flashinstructions">        </textarea>
</div>

这是我试图用来附加的控制器/功能:

formApp.controller('formController', function($scope) {
    $scope.formData = {};
    $scope.formData.flashinstructions = "";
    $scope.addspecialInstructions = function(text) {
            var added = $scope.formData.flashinstructions + text;
            $scope.formData.flashinstructions = added;
            alert(added);
        }

我收到此错误:

ReferenceError: formData is not defined

我知道 JQuery 有一个 .append() 函数,但我似乎无法让它工作。

我对 Javascript、JQuery 和 AngularJS 还是很陌生。我可能正在处理范围问题,想知道下一步该去哪里寻找解决方案。

如果您能提供任何帮助,我们将不胜感激。

【问题讨论】:

  • 为了简洁起见,我在上面的许多
  • 条目列表中只有 1 个
  • 标记
  • 错字:将你的控制器方法重命名为$scope.addSpecialInstructions,它会起作用。
  • 标签: javascript jquery html angularjs


    【解决方案1】:

    你可以像这样改变你的控制器。

    formApp.controller('formController', function($scope) {
        var formData = {};
        formData.flashinstructions = "";
        formData.addspecialInstructions = function (text) {
            var added = formData.flashinstructions + text;
            formData.flashinstructions = added;
            alert(added);
        }
        $scope.formData = formData;
    

    你的html看起来像

    <div id="specialinstructions-group" class="form-group">
      <div class="dropdown">
        <label data-toggle="dropdown" class="dropdown-toggle">Special Flash Instructions<b class="caret"></b></label>
          <ul class="dropdown-menu">
            <li ng-click="formData.addSpecialInstructions('Please unplug the system for 10 seconds after the BIOS and EC update completes.')"><span>10 Second Powercycle</span></li>
          </ul>
        <textarea name="FlashInstructions" class="form-control" id="FlashInstructions" rows="3" ng-model="formData.flashinstructions">        </textarea>
    </div>
    

    我也鼓励你在控制器中使用对象字面量,而不是所有东西都与 $scope 绑定。所以首先创建一个对象,然后在你的控制器末尾,你可以绑定它 $scope.这是一个很好的做法。

    【讨论】:

    • 谢谢卡希夫。解决了这个问题。 $scope 绑定经常给我带来麻烦。你的帮助太棒了1
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签