我有将项目推送到数组的功能。在结束函数中,我将空字符串分配给$ 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 = '';
};
答案 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 强>
<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;
<强>控制器强>
$scope.obj.newTask = '';
$scope.addTask = (newTask, index) => {
$scope.board.lists[index].cards.push({ 'name': newTask, 'deadline': null, members: [] });
$scope.obj.newTask = '';
};
&#13;