1

我有一个多维数组被注入到我的视图范围中,其中包含学生的出勤数据。从本质上讲,它是反映许多记录的数字考勤表。我正在使用 angularjs 进行可以异步修改单个记录的 XHR 调用。

问题:一旦我修改了单个记录,例如:通过 ajax 将 A(不存在)更改为 P(存在),我想为该特定表格单元添加或删除 css 类。但是,指令在绑定时执行,并且我需要在通过 ajax 修改记录后执行它,在数据绑定很久之后。

这在控制器中使用 jQuery 很容易实现,就在 PUT 调用成功函数中。但这不是修改 dom 的“角度方式”。但是,从我所读到的显然,在绑定后修改 DOM 也是不好的做法。当然,有一种方法可以用 angular 来“正确”地做到这一点……我希望你们能增加一些清晰度。非常感谢的想法。

这是控制器中的 PUT 调用,它在 PUT 完成后通过并适当地修改范围,然后使用我在更改单元格之前提到的 jQuery:

$http.put("/api/attendance/PutAttendRecord/", stuInfo)
.then(function (d) {
    var dt = d.data.class_date_am;
    var dc = d.data.dc_number;
    var st = d.data.status_am;

    $scope.classlist.forEach(function (obj) {
        if (dc == obj.DcNumber) {
            obj.Attend.forEach(function (attObj) {
                if (dt == attObj.ClassDate) {
                    var el = $scope.thisElement.parentNode;

                    if ($(el).hasClass("statusupdated")) {
                        $(el).removeClass("statusupdated");
                    } else { $(el).addClass("statusupdated"); }

                    attObj.Status = st;
                }
            })
        }
    })
})

这是指令,到目前为止,除了控制台日志之外,它没有完成任何事情。

var updateRecord = function () {

    var directive = {
        link: link
    }
    return directive;
    function link(scope, element, attrs) {
        console.log(element.val());
    }
}

app.controller("ModifyRecordController", ModifyRecordController)
.directive("updateRecord", updateRecord);

谢谢!

4

0 回答 0