首页 > 如何使封装的指令中的一个按钮在不同的情况下被点击后执行不同的操作

如何使封装的指令中的一个按钮在不同的情况下被点击后执行不同的操作

是这样的,我写了一个指令,实现的功能是点击后出现一个可以提交数据的模态窗。

根据需求,可以提交不同的数据(向服务器发送数据的接口不同)

请问有没有什么办法,能够使我在指令外部控制指令内点击了「提交」按钮后执行的方法?

<my-directive mode="mode1">
    BUTTON
</my-directive>

{
    restrict: 'E'
    scope: {
        mode: '@',
        data: '='//此处传入的data将在link函数内作处理,不能直接以此发送至服务器
    }
    link: function(scope, element, attrs) {
        element.bind('click', function(){
            switch (attrs.mode) {
                case 'mode1':
                    ...
                    break;
                case 'mode2':
                    ...
                    break;
                case 'mode3':
                    ...
                    break;
                default:
                    break;
            }
        })
    }
}

我现在的做法是通过一个mode属性传入模式,在link函数中通过switch语句执行不同的操作,有没有什么办法能够使操作方法作为参数传入指令呢?


想到2中方式:

1.使用事件,$on,$emit,缺点就是管理不方便

2.使用service,缺点就是使用不灵活


其实。。。这种需求应该这个设计

button 触发----> 不同的 modal框 ---->不同的modal框组装出不同的formModel ----> 点击modal框的commit按钮 formModel 返回给 控制 button的controller --->controller调用service吧formModel提交到后台

【热门文章】
【热门文章】