每行的ng-repeat和唯一函数

时间:2017-11-16 15:26:40

标签: javascript angularjs

目前,我正致力于构建时间表应用程序。在创建时间表页面上,用户可以针对不同任务收取工时。这些任务与项目相关联,因此工作流程为:

1)用户选择项目。

2)API触发并使用与该项目关联的任务填充我的选择列表。

3)用户选择一项任务,并为该任务收取时间。

时间表上的每一行都是通过页面按钮触发的ng-repeat生成的。

我的问题是在我的projectIDSelected函数中,我将任务推送到$ scope.tasks。如果用户尝试向其他项目收取时间,则会覆盖任务,因此时间表中的第一行将其任务更改为第二行中返回的任何内容。

我不确定如何使用ng-repeat处理添加时间表行,但是有一个独特的' $ scope中每个时间表行的存储库。

我的代码如下:

控制器功能:

this.projectIDSelected = function (data) {

    console.log("project id selected function has fired.");
    console.log($scope.projects);

    TaskApi.GetProjectTasks(
        {
            params: {
                projectId: data,
            }
        },
        //handle success
        function (res) {
            console.log("Tasks for ProjectId retrived");
            console.log(res);
            var json = {};
            $scope.tasks = [];
            for (i = 0; i < res.data.length; i++) {
                json = res.data[i];
                json.text = json.taskName;
                delete json.taskName;
                $scope.tasks.push(json);
            }

            // $scope.tasks = res.data;

        },
        //handle failure
        function (res) {
            console.log(res);

        }
    )
}

我的观点:

<div class="wrapper wrapper-content animated fadeInRight" ng-controller="createTimesheetCtrl as createTSCtrl" >

<tr ng-repeat="taskDetail in taskDetails | filter:createTSCtrl.filterTaskDetail" class="footable-even">

<!-- editable Project (select-local) -->
<span editable-select="taskDetail.project" e-form="tableform" e-ng-model="projectID" e-ng-change ="createTSCtrl.projectIDSelected($data)" e-ng-options="pj.id as pj.text for pj in projects">
{{ createTSCtrl.showProject(taskDetail) }}
</span>
 </td>

0 个答案:

没有答案