在这种情况下,双向数据绑定不会分配空值AngularJS

时间:2018-03-18 16:10:42

标签: angularjs

我有将项目推送到数组的功能。在结束函数中,我将空字符串分配给$ scope.newTask以清除 textarea 中的值。

但是......

问题是它不起作用,执行函数后,textarea里面的值仍然是。有人能解释我为什么吗?

HTML

<form name="cardFrm" novalidate>
  <textarea ng-model="newTask" ng-keypress="($event.keyCode==13) ? addTask(newTask, $index) : return"></textarea>
  <button ng-click="addTask(newTask, $index)">Add</button>
</form>

控制器

$scope.addTask = (newTask, index) => { 
    $scope.board.lists[index].cards.push({ 'name': newTask, 'deadline': null, members: [] });
    $scope.newTask = '';

};

2 个答案:

答案 0 :(得分:0)

这是将项目推入数组并清除文本框的小工具:

$scope.cards = [];

$scope.addTask = (newTask, index) => {
  $scope.cards.push({
    'name': newTask
  });
  $scope.newTask = '';
};

https://jsfiddle.net/junkangli/pL2wrted/

您的代码的问题应该是声明:

$scope.board.lists[index].cards.push({ 'name': newTask, 'deadline': null, members: [] });

答案 1 :(得分:0)

我认为您的问题是嵌套范围。如果$ scope.newTask等于作为第一个参数接收的newTask,请检查addTask方法。要解决此问题,您可以使用controllerAs语法或在复杂对象中保存值,例如:

<强> HTML

&#13;
&#13;
<form name="cardFrm" novalidate>
  <textarea ng-model="obj.newTask" ng-keypress="($event.keyCode==13) ? addTask(obj.newTask, $index) : return">   </textarea>
  <button ng-click="addTask(obj.newTask, $index)">Add</button>
</form>
&#13;
&#13;
&#13;

<强>控制器

&#13;
&#13;
$scope.obj.newTask  = '';

$scope.addTask = (newTask, index) => { 
    $scope.board.lists[index].cards.push({ 'name': newTask, 'deadline': null, members: [] });
    $scope.obj.newTask = '';

};
&#13;
&#13;
&#13;