gpt4 book ai didi

javascript - angularjs:在中间添加行时检测ng-repeat何时完成

转载 作者:行者123 更新时间:2023-11-30 05:32:07 26 4
gpt4 key购买 nike

每个发布的解决方案都是指检测 ng-repeat 何时完成依赖于范围。$last 值,如下所示:

angular.module('fooApp')

.directive('onLastRepeat', function () {
return function (scope, element, attrs) {
if (scope.$last) {
setTimeout(function () {
scope.$emit('onRepeatLast', element, attrs);
}, 1);
}
};
})

问题是这个解决方案只有在你附加到列表的末尾时才有效。如果您在中间插入数据,scope.$last 将始终为 false,并且您不知道 angularjs 何时完成重新绑定(bind)新绑定(bind)的行。无论 ng-repeat 在何处呈现数据,有人有解决方案吗?

例子:

html:

<button ng-click="addToList()"></button>
<table>
<tbody>
<tr ng-repeat="foo in list" on-last-repeat><td><span>{{foo}}</span></td></tr>
</tbody>
</table>

Controller 代码:

$scope.addToList = function() {
$scope.list.splice(1, 0, 4);
}

$scope.list = [1, 2, 3];

如果您在带有上述代码的示例中单击按钮,指令中的 $scope.last 为 false,该指令应该在渲染完成时触发。

最佳答案

你能用这样的东西吗?

angular.module('fooApp')
.directive('onLastRepeat', function () {
return function (scope, element, attrs) {
if (scope.$middle) {
setTimeout(function () {
scope.$emit('onRepeatMiddle', element, attrs);
}, 1);
}


if (scope.$last) {
setTimeout(function () {
scope.$emit('onRepeatLast', element, attrs);
}, 1);
}
};
})

关于javascript - angularjs:在中间添加行时检测ng-repeat何时完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26273979/

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