我正在使用在线仪表板。该仪表板有一个由与某个项目相关的所有任务组成的页面。每个任务都有一些字段,例如预定给任务的小时数以及进度(从0到100%)。AngularJS - 更新字段后在ng-repeat中查找对象
它是可以改变的进展场,因为它包括了所有可能的百分比的下拉菜单中。我曾经改变进度,选择每一行,我修改并点击'更新任务'按钮,以便将它们发送给我的控制器并更新它们。这一直没有问题,直到我的同事提出一旦进度字段的值被更改后自动更新任务的想法。每改变一次数值,我就可以在每一个激活的值上放置一个ng-click
。
但是我的问题是,我该如何让我的控制器知道在那一刻我正在工作的行。假设我有3个不同的任务并更改了任务2的进度。我的控制器应该知道它必须将任务2的ID发送到服务器以更新其内容。
只要任务2的值更改为例如30%,updateTaskById()方法就会执行。此方法应使用新值更新数据库中的任务。我如何让我的控制器知道它需要更新什么任务。
HTML
<td md-cell class="tdWidth">
<md-select ng-model="task.custom_fields['96203']" placeholder="100%">
<md-option value="0" ng-click="updateTaskById()">0%</md-option>
<md-option value="0.1" ng-click="updateTaskById()">10%</md-option>
<md-option value="0.2" ng-click="updateTaskById()">20%</md-option>
<md-option value="0.3" ng-click="updateTaskById()">30%</md-option>
<md-option value="0.4" ng-click="updateTaskById()">40%</md-option>
<md-option value="0.5" ng-click="updateTaskById()">50%</md-option>
<md-option value="0.6" ng-click="updateTaskById()">60%</md-option>
<md-option value="0.7" ng-click="updateTaskById()">70%</md-option>
<md-option value="0.8" ng-click="updateTaskById()">80%</md-option>
<md-option value="0.9" ng-click="updateTaskById()">90%</md-option>
<md-option value="1" ng-click="updateTaskById()">100%</md-option>
</md-select>
</td>
角控制器:
$scope.updateTaskById = function() {
// Update functionality here
};
在此先感谢,我希望我的问题是非常明显的。
编辑:在亚历山德鲁的答案中可以看到,我发送的任务值是从ng-click
改变的。例如:updateTaskById(task.task_id)
。
这是一个有点很难理解你正在努力实现无代码 – Mistalis
什么@Mistalis我已经更新的问题,试图使之成为可能的未来更清晰参考 – Lesleyvdp