在AngularJS中使用父指令方法的最好方法



我对建议感兴趣,在其子指令中使用父指令方法的方式。方法一:将其作为html中初始化子指令的作用域参数。方法二:使父指令为必需,并获得对父控制器的访问权。egz:

module.directive('widget', [function () {
        return {
            restrict: 'E',
            require: '?^^widgetContainer', <-- here
            scope: {
                widgetItem: '='
            },
            link: function (scope, elems, attrs, controller) {
                        controller.rejectWidgetAdd(scope.widgetItem);
                    controller.removeWidget(scope.widgetItem);  
            },
            templateUrl: 'plugins/workspace/app/widget/view.html'
        };
    }]);

使用require方法(上面的方法2 )在子指令和父指令之间创建了一种"强引用"。解释这个指令属性的官方指南使用选项卡栏和选项卡作为示例。接下来,我建议在子指令不能单独合理使用时使用require方法。将这两个逻辑对象分离到自己的指令中主要是为了更好的可读性和关注点分离。

通过属性将控制器传递给指令可能被认为是"弱引用"或Java中接口的使用。子指令不强制使用特定的父指令实现,尽管期望使用一些常见的方法(否则将在运行时出现错误)。因此,可以很容易地将"父"控制器与另一个实现交换。结合发生在&上。angularJS指南使用了一个例子,其中对话框的关闭方法通过引用传递到对话框的作用域。在此之后,只要子指令可以独立使用,就应该使用"方法1 "。它从它的"父"访问的方法以API的方式使用,而不是一个中心逻辑成分。例如,一个显示项目列表的指令,排序/排序函数可以作为属性传入。

最新更新