Angularjs - ng-switch是否有内容加载事件?

时间:2013-11-04 23:14:14

标签: javascript jquery angularjs web

我有一个具有不同内容的ng-switch,其中一个是Gallery,我必须在切换ng-switch-when = gallery内容准备好之后将JQuery事件设置为所有图像,但不幸运,因为它触发了加载内容之前的事件。

图库是第三个ng-switch-when所以我无法使用ng-init设置事件。

那么,ng-switch是否有内容加载的事件或指令?

<a href="" ng-click="menuSelection='gallery';loadLibraryGallery();">GALER&Iacute;A</a>

控制器

$scope.loadLibraryGallery = function(){
//I have to set this event to childrens after ng-switch-when=gallery is loaded
        $('.popup-gallery').magnificPopup();

    };

任何想法。请 谢谢。

2 个答案:

答案 0 :(得分:14)

您可以查看ngSwitch指令的source on github 它从不调用任何$ broadcast或$ emit函数,所以不,它没有这样的事件。

您可以尝试创建自己的指令,这非常简单。在插入html代码后,该指令将被链接。

让我们说这是你的代码:

HTML:

<ANY ng-switch="expression">
    <ANY ng-switch-when="matchValue1" data-gallery>...</ANY>
    <ANY ng-switch-when="matchValue2">...</ANY>
    <ANY ng-switch-default>...</ANY>
</ANY>

JS:

angular.module('app').directive('gallery', function(){
     return function ($scope, $element, attrs) {
         $element.find('.popup-gallery').magnificPopup(); 
     }
});

请记住,您永远不应该修改DOM或调用从控制器修改DOM的代码。这是指令工作。

答案 1 :(得分:2)

您也可以使用函数data-ng-init,它在切换之前初始化指定的数据。

看起来像:

<ANY ng-switch="expression">
    <ANY ng-switch-when="matchValue1" data-ng-init="loadLibraryGallery()">...</ANY>
    <ANY ng-switch-when="matchValue2">...</ANY>
    <ANY ng-switch-default>...</ANY>
</ANY>

官方文件 https://docs.angularjs.org/api/ng/directive/ngInit