【问题标题】:How do you add text to a text box with an input field and delete it from the text box with Angular JS?如何使用 Angular JS 将文本添加到带有输入字段的文本框中并从文本框中删除它?
【发布时间】:2015-08-21 13:35:06
【问题描述】:

我创建了两个表单。第一个是我可以将许多类型的项目提交到一个数组中,以便在第二种形式的文本框中显示。第二种形式的文本框应显示数组中的项目,因为新项目是从第一种形式添加的。我希望能够删除文本框中的项目并让它在保存之前从数组中删除项目。我还想从数组中选择一个项目作为主名称。我在第二个表单中设置了一个输入框,用于选择主要名称。

下面的代码有几个问题: 1)文本框不会添加新项目,因为它们是从第一个表单输入或提交的。 2)如果我将信息放在我的数据存储中,它将显示在我的文本框中,因为我将其设置为可编辑的表单,但是当我从文本框中删除信息时,它不会从我的数组中删除它(至少从我可以告诉)。 3) 选择一个主名称有点用,但它有问题,而且似乎只有在我每两次尝试更改其中的值时才能顺利运行。

我的印象是 ng-bind(或者可能是 ng-list?)会协调 DOM 中的数据与模型中的更改。我哪里错了?我查看了有关此问题的几个链接,这些链接有些帮助,但我无法将它们完全应用于手头的任务:

https://docs.angularjs.org/api/ng/directive/ngBind
https://docs.angularjs.org/api/ng/directive/ngList
http://codepen.io/NicholasMurray/pen/ogmLyy
http://stackoverflow.com/questions/16125872/why-ng-bind-is-better-than-in-angular

我的 HTML:

<form class="first-signup-inner-form" ng-submit="submit()">
<input list="names" ng-model="aliases" type="text" placeholder="Names">
<input type="submit" value="Submit">
</form>

<form class="first-signup-inner-form" editable-form name="editableForm">
<textarea class="w-input alias-text-field" id="Aliases" placeholder="All Names" name="Aliases" ng-bind="list"></textarea>
<input class="w-input business-name-text-field" list="aliases" ng-model="user.Name" id="Business-Name" type="text" placeholder="Official Name" name="Business-Name" required="required">
<datalist id="aliases"><option data-ng-repeat="alias in list" value="{{alias}}"></datalist>
</form>

JS:

$scope.list = [];
$scope.aliases = "";
$scope.submit = function(){
            if ($scope.aliases){
              $scope.list.push(this.aliases);
              $scope.aliases = "";
            }
          };

【问题讨论】:

  • 谢谢。这实际上不在我的真实代码中 - 当我砍掉它时引入了这个错误。我现在就修。
  • 可能还会显示更多信息,例如您的整个 HTML 结构和控制器等。
  • 在您的提交函数中,您在任何地方都使用了$scope.aliases,除了您实际将它插入到您使用this 引用它的数组的语句 - 为什么?
  • @callmekatootie 除了我能够从几个示例中获取并开始工作之外,我没有给你一个好的答案。你有什么建议?
  • 保持一致。使用$scope 而不是this。另外——你使用了许多你没有谈论过的指令——也许它们会以某种方式干扰。最好创建一个 plunkr 或小提琴并展示您面临的问题

标签: javascript arrays angularjs html forms


【解决方案1】:

所以这是你的问题的答案See here

【讨论】:

  • 答案是倒退——我想在单击提交时添加到框中,如果出现错误,我想选择性地删除添加到框中的项目。我无法控制使用您的解决方案删除哪些项目。
  • @rashadb 这只是提示。你可以很容易地理解其余的事情。所以我认为提示对你更有用。
  • 感谢您的提示,但我无法得到它。我无法将您的答案标记为正确,因为其他人可能仍会在这方面提供更多帮助。
  • 谢谢卡皮尔。我明白你的意思了。我希望我能从这里得到剩下的!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-14
  • 2021-02-20
  • 2013-10-09
  • 1970-01-01
  • 2020-03-12
相关资源
最近更新 更多