无法从Angular UI模式中的id获取元素

Sha*_* Xu 1 angularjs angular-ui

我有一个AngularJS应用程序与Angular-UI模式.我想从控制器中检索模态HTML中定义的DOM元素,但它返回了undefined.

我在Plunker上传了我的代码(http://plnkr.co/edit/eoOuJiVaYASH1jMO8t2q?p=preview).

ModalInstanceCtrl控制器中,如果我试图检索myElem模态模板中定义的元素,它给了我一个未定义的异常,如下所示,但如果我评论的话,效果很好var elem = $document.getElementById('myElem');.

TypeError: undefined is not a function
    at new  (http://run.plnkr.co/K8SndGsk5DANhGl2/:36:28)
    at invoke (http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.20/angular.js:3918:17)
    at Object.instantiate (http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.20/angular.js:3929:23)
    at http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.20/angular.js:7216:28
    at resolveSuccess (http://cdnjs.cloudflare.com/ajax/libs/angular-ui-bootstrap/0.10.0/ui-bootstrap-tpls.js:1710:32)
    at wrappedCallback (http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.20/angular.js:11498:81)
    at http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.20/angular.js:11584:26
    at Scope.$eval (http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.20/angular.js:12608:28)
    at Scope.$digest (http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.20/angular.js:12420:31)
    at Scope.$apply (http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.20/angular.js:12712:24)

我在下面的代码中遗漏了什么?

谢谢,

Ran*_*ika 6

正如你所说,DOM是在控制器执行后构建的。尝试将 $timeout 注入模态控制器并将 $timeout 设置为 0。


小智 6

$scope.openModal = function () {
  var modal = $modal.open({
    animation: false,
    templateUrl: 'app/modules/demo/modal.html',
    controller: 'MyModalCtrl',
    resolve: {
      vm: function () {
        return 'id';
      }
    }
  });
  modal.rendered.then(function () {
     //process your logic for DOM element
     console.info(document.getElementById('elementIdInModalTemplate');
  });
Run Code Online (Sandbox Code Playgroud)