gpt4 book ai didi

javascript - Angular js-值更改时突出显示dom

转载 作者:可可西里 更新时间:2023-11-01 02:13:58 25 4
gpt4 key购买 nike

这里是 Angular noobie。我想知道当范围内的值通过某种方式发生变化时更改 dom 的最佳方法是什么。我读到将 dom 操作逻辑放在 Controller 中是不好的,这就是指令的工作。

这是一个笨蛋

http://plnkr.co/edit/xWk5UBwifbCF2raVvw81?p=preview

基本上,当通过单击上面的 plunkr 中的加载数据按钮更改数据时,我希望值更改的单元格自动突出显示。我无法让它为我的生活工作。

有什么帮助吗?

最佳答案

我认为最好观察每个 highlighter 的具体值,而不是观察整个集合。例如:

<td highlighter="person.firstName">{{ person.firstName }}</td>

这样,highlighter 指令可以非常简单,例如:

app.directive('highlighter', ['$timeout', function($timeout) {
return {
restrict: 'A',
scope: {
model: '=highlighter'
},
link: function(scope, element) {
scope.$watch('model', function (nv, ov) {
if (nv !== ov) {
// apply class
element.addClass('highlight');

// auto remove after some delay
$timeout(function () {
element.removeClass('highlight');
}, 1000);
}
});
}
};
}]);

不过,要使其正常工作,您必须告诉 Angular 数据实际发生了变化。目前情况并非如此,因为 Angular 跟踪 people by object-identity。在您覆盖它的那一刻,angular 将删除所有关联的 dom 元素。为此,请使用:

ng-repeat="person in people track by $index"

这将告诉 Angular 将数组的索引视为标识。

演示:http://jsbin.com/vutevifadi/1/

关于javascript - Angular js-值更改时突出显示dom,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20115875/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com