javascript - 将项目添加到 Angular 列表中

标签 javascript angularjs

我有以下内容来创建一个具有职位和多项要求的工作 Plunker example :

<div ng-controller="MainCtrl as vm">      
  <div>Position: <span data-ng-bind="vm.job.position"></span></div>      
  <br/>      
  <form name="form" data-ng-submit="vm.create(job)">        
    <label for="position">Enter the Position</label>
    <input id="position" name="vm.job.position" type="text" data-ng-model="vm.job.position" />
    <div>
      <br/>
      Requirements:
      <br/>
      <ul>
        <li data-ng-repeat="r in vm.job.requirements">{{r.name}}</li>
      </ul>
      <input id="name" name="requirement.name" type="text" data-ng-model="requirement.name" />
      <input type="button" value="Add Requirement" class="button" data-ng-click="vm.addRequirement(requirement)"/>          
    </div>        
    <br/><br/>                
    <button>Create Job</button>              
  </form>            
</div>    

Controller

var app = angular.module('plunker', []);

  app.controller('MainCtrl', function($scope) {
    var vm = this;  
    vm.job = { position: '', requirements: [] };

    vm.create = function (job) {      
      alert("job created");    
    }

    vm.addRequirement = function (requirement) {
      vm.job.requirements.push(requirement);
    }  

});

当我添加一项要求时,我会在列表中看到它,但是当我尝试添加新要求时,列表中已有的要求开始发生变化。我不要那个。我想在列表中添加一个新的。

最后,当我使用“创建作业”提交表单时,我会将所有作业数据发送到 API。

最佳答案

问题出在您的 addRequirement 函数上,因为您正在将相同的对象添加到列表中(这就是您的项目在编辑输入框时更改名称的原因)。

为了使您的示例按预期工作,您应该推送需求对象的克隆(请参阅 documentation )。

 vm.addRequirement = function (requirement) {
   vm.job.requirements.push( angular.copy(requirement) );
 }  

关于javascript - 将项目添加到 Angular 列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39041431/

相关文章:

angularjs - Angular 未定义 karma-jasmine 测试错误

angularjs - 在 Angular 模板中设置类值

javascript - 将鼠标悬停时弹出的文本框中的文本部分加粗-D3

javascript - 无法读取 null 类型的事件监听器的属性

angularjs - DOMException : The requested file could not be read, 通常是由于在获取对文件的引用后发生的权限问题

javascript - 如何在 angularjs 中克隆作用域?

javascript - 为什么省略号插件不能在 Angular 中工作

Javascript 函数返回意外结果

javascript - 如何使用css3做连续翻译效果

javascript - angular 2 访问组件内的 ng-content