Javascript angular.element()找不到DOM元素
我有一个从Firebase数据库动态填充的用户表:Javascript angular.element()找不到DOM元素,javascript,angularjs,firebase,firebase-realtime-database,Javascript,Angularjs,Firebase,Firebase Realtime Database,我有一个从Firebase数据库动态填充的用户表: <table id="users"> <thead> ... </thead> <tbody> <tr ng-repeat="user in users"> <td data-user-id="{{user.$id}}">{{user.$id}}</td> </tr>
<table id="users">
<thead>
...
</thead>
<tbody>
<tr ng-repeat="user in users">
<td data-user-id="{{user.$id}}">{{user.$id}}</td>
</tr>
</tbody>
</table>
在
loadUsers()
中,我试图找到一个包含特定用户ID的单元格。上面的log语句返回一个长度为0的数组。为什么会发生这种情况?当我在Chrome控制台中尝试语句1和2时,效果很好。将您的循环放在viewContentLoaded
事件中。它看起来像是异步的
$scope.$on('$viewContentLoaded', function () {
for (var id in users) {
var user = users[id];
// Find cell with user ID
var element = angular.element('#users tr td[data-user-id="' + user.id + '"]'); // 1
console.log(element); // 2
}
});
对我有效的方法是将
loadUsers()
转化为一个指令。它是在使用ngRepeat
生成DOM元素后调用的
HTML:
显示您的DOM结构在项目中是否使用jQuery?尝试
angular.element().find(“#users trtd[data user id=“”+user.id+”)
您必须显示更多代码。它不能在代码和控制台中工作的一个可能原因是,当您执行这些行时,元素还没有出现在DOM中。项目中未使用jQuery。。。在哪里分配$scope.users?@user2181948哪里是$scope.users
?
$scope.$on('$viewContentLoaded', function () {
for (var id in users) {
var user = users[id];
// Find cell with user ID
var element = angular.element('#users tr td[data-user-id="' + user.id + '"]'); // 1
console.log(element); // 2
}
});
<tr ng-repeat="user in users" load-users>
var app = angular
.module('app', ['firebase'])
.directive('loadUsers', loadUsers);
function loadUsers($scope, DatabaseFactory) {
return function(scope, element, attrs) {
if (scope.$last) {
...
}
}
};