javascript - 如何通过从angular的ng-init传递的Id获取html元素

标签 javascript angularjs angularjs-scope

当我使用 ng-click 时,我可以通过 id 获取 html 元素,但是使用 ng-init 我得到 null。请检查我的笔http://codepen.io/solidet/pen/pbJMjq

html

<script type="text/javascript">
    var memId = "bb7de28f-0f89-4f14-8575-d494203acec7";
</script>   

<div  ng-app="myapp" ng-controller="MainCtrl" ng-init="getMember(memId)">
    <span id="audio-{{memId}}">
        Your mem ID: {{memId}}
    </span>     
    <span ng-click="getMember(memId)"> click me <span>
</div>

Controller

var app = angular.module('myapp', []);

app.controller('MainCtrl', ['$scope', '$window', function($scope, $window) {
  $scope.memId = $window.memId;

  $scope.getMember = function(id) {
    console.log(id);
    var voice = document.getElementById('audio-'+ id);
    console.log(voice);
  };
}]);

最佳答案

你可以通过 angular $timeout 得到它,它会等到 Angular 循环完成并呈现元素

Controller

var app = angular.module('myapp', []);

app.controller('MainCtrl', ['$scope', '$window', '$timeout', function($scope, $window, $timeout) {
    $scope.memId = $window.memId;
    $scope.getMember = function(id) {

        $timeout(function() {
            console.log(document.querySelector('#audio-' + id))
        });
    };

}]);

关于javascript - 如何通过从angular的ng-init传递的Id获取html元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37652030/

相关文章:

javascript - 删除某些 div 元素的父级 href 属性

javascript - 仅使用 URL 的一部分运行 if/else 脚本

angularjs - 如何使用 ng-click 将 Angular Material 选项卡制作为向导?

javascript - 减少 switch 语句中的数组 (AngularJS)

javascript - Angularjs 最佳实践 - $scope 与 this

javascript - 摘要循环显示我的数组没有变化(并且 View 不刷新)

javascript - 在node-express应用程序中使用node-mysql建立共享连接

javascript - 在 JavaScript 中返回一个数组

AngularJS orderBy 函数在 ng-repeat 中被忽略

angularjs - 从数组中删除$$ hashKey