在Angular中渲染DOM对象时,如何调用控制器中指定的函数?

时间:2015-04-01 20:17:06

标签: javascript jquery angularjs

我有一个模式,我想在指定URL参数时显示(例如,url.com/?showmodal=1。如何在渲染div后调用launchModalIfParameter?下面包含了一些摘录。

Core.js

function getUrlParameter(sParam)
{
    var sPageURL = window.location.search.substring(1);
    var sURLVariables = sPageURL.split('&');
    for (var i = 0; i < sURLVariables.length; i++) {
        var sParameterName = sURLVariables[i].split('=');
        if (sParameterName[0] == sParam) {
            return sParameterName[1];
        }
    }
}

Widget.html(使用Bootstrap的模态对话框)

<div class="modal fade" id="createSupportTicket" role="dialog" aria-hidden="true">
</div>

Widget.js

$scope.launchModalIfParameter = function () {
     if ($('#createSupportTicket').length) {
         alert('Found with Length');
     }
     if (getUrlParameter('ticket') == 1) {
         $('#createSupportTicket').modal('show');
         console.log("Shown activated");
     }
}

1 个答案:

答案 0 :(得分:1)

使用自定义指令非常简单。

基本上你创建了一个自定义指令,并且在链接函数(在你的模态被编译,数据绑定等之后运行)中,你可以根据一些标准显示模态。

这很简单:

link: function(scope, element, attrs) {
                if (getUrlParameter('ticket') == 1) {
                     $(element).modal('show');
                 }
            }

小提琴在这里说明了这一点: http://jsfiddle.net/gtxdLcb8/

这样做的另一个额外好处是,您可以在示波器上添加$ watch变量(在链接函数中),并在变量发生变化时自动显示或隐藏模态。