13

我正在为我正在开发的网站使用bootstrap-angular-ui-modal。我用来打开模式的代码

$modal.open(
    {
        templateUrl: '/home/template',
        controller: myCtrl,
        resolve: {
            data: function () {
                return data;
            }
        }
    });

一切正常。但是我需要找到一种在加载模式后执行一些代码的方法。我尝试了不同的东西,但无法使它们起作用。我尝试过的一些事情

在模板中我做了

<script>
    document.onload = function () {
        console.log('opened');
    };
</script>

我还发现有一个名为 openned 的角模态对象的承诺。我试过了

modalInstance.opened.then(function(){console.log('hello')});

也不工作。我可以在这里使用一些帮助。

4

4 回答 4

6

这绝对不是一个好的解决方案,但至少对我有用。我只是在执行所需功能之前添加了一个超时,

modalInstance.opened.then(
    $timeout(function() {
            console.log('hello');
        }, delay));
于 2015-02-04T20:38:37.680 回答
5

UI-bootstraps modal 有一个result解决方法。

"opened" - 在下载内容模板并解析所有变量后打开模式时解析的承诺

或者

使用 ng-init。在模板文件中创建一个 div:

<div ng-init="func()"></div>
于 2013-10-29T11:48:43.260 回答
3

从版本 0.13.0 开始rendered您可以使用一个 Promise。

rendered (类型promise:) - 在呈现模式时解决。

例子:

this.modalInstance.rendered.then(function () {
    console.log("modal is rendered");
});
于 2016-04-18T13:10:47.777 回答
1

如果你想在 DOM 加载后做一些事情,最好在指令中做那种事情。见这里:http ://docs.angularjs.org/guide/directive#creating-a-directive-that-manipulates-the-dom

你可以用你的指令属性标记你的模态体(或模态内的东西),然后像这样创建指令:

App.directive('myDirective', function($timeout) {
        function link(scope, element, attrs) {
            $timeout(function () {
                // stuff to do after DOM load here
            });
        }

        return {
             link: link
        };
    });
于 2014-02-24T21:37:46.980 回答