使用ng-show按钮单击会显示一个单独的div

时间:2016-08-26 08:57:42

标签: javascript angularjs angularjs-directive controller

我试图让我的头围绕角度将DOM元素转换为DOM元素通信:
我们正在整理一组电子学习模板。我们添加的第一个交互式组件是一个子弹(实际上是一个按钮)和一个弹出窗口。子弹和弹出窗口可以位于页面的不同部分,因此它们不在同一个指令的范围内(尽管有一个过度的页面控制,所以它们有共同点)。

我们制作了自定义属性指令来触发每个组件类型的html模板中的加载;这是eng-bullet的指令:

app.directive('engBullet', function() {
        return {
            restrict: 'A',
            replace: true,
            templateUrl: 'components/bullet.html',
            link: function(scope, element, attrs) {
                // following function referenced in bullet.html
                scope.showElementByUniqueName = function (showOnClick) {

                    // remove 'replaces' element
                    $('#'+$('#'+showOnClick).attr('data-replaces')).addClass('hidden');

                    // hide all popups (in case another popup is currently visible)
                    $('.popup').addClass("hidden");

                    // show selected popup
                    $('#'+showOnClick).removeClass("hidden");
                }
            }
        };
    });

目前,bullet组件被赋予一个'show_on_click'字符串(来自描述页面内容的json文件),并将其传递给项目符号模板(components / bullet.html):

<div class="button bullet" ng-click="showElementByUniqueName( component.bullet.show_on_click )"><p>{{component.bullet.text}}</p></div>

'show_on_click'变量对应于子弹应显示的特定弹出窗口的ID,然后在eng-bullet指令中使用此变量来显示正确的弹出窗口。

如果我在我的弹出模板中添加了ng-show指令,我如何将其绑定到页面不同部分的相应项目符号?

我可以将逻辑放在pageCtrl中,但后来我被告知控制器应该是“精益和愚蠢”。如何以角度方式指定要显示的弹出窗口?

0 个答案:

没有答案