Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 创建要跨模型和控制器使用的指令_Javascript_Angularjs - Fatal编程技术网

Javascript 创建要跨模型和控制器使用的指令

Javascript 创建要跨模型和控制器使用的指令,javascript,angularjs,Javascript,Angularjs,我的整个应用程序都有类似的功能,用户可以输入标题和链接 所以-我想我应该创建一个指令。但是,该指令需要在各种控制器的上下文中使用 例如,在my/contracts视图中,控制器是ContractsController,在提交时,ContractsController将发送一个API请求以保存合同 但是在my/meeting notes视图中,控制器是MeetingNotesController,这将处理到不同端点的请求,以针对客户端保存会议笔记 以下是我目前的指示: app.js .direct

我的整个应用程序都有类似的功能,用户可以输入标题和链接

所以-我想我应该创建一个指令。但是,该指令需要在各种控制器的上下文中使用

例如,在my/contracts视图中,控制器是ContractsController,在提交时,ContractsController将发送一个API请求以保存合同

但是在my/meeting notes视图中,控制器是MeetingNotesController,这将处理到不同端点的请求,以针对客户端保存会议笔记

以下是我目前的指示: app.js

.directive('myprefixLinkAttachment', function($timeout) {
    return {
        restrict: 'A',
        templateUrl: '../partials/directives/link-attachment.html',
        scope: {},
        link: function link(scope, element, attrs) {
            $timeout(function() {
                console.log(scope.$parent);
                console.log(scope.title);
            }, 5000);
        }
    }
})
超时返回正确的值-我正在测试是否可以获得该值

链接附件.html

<md-input-container class="md-block" md-no-float flex="100" flex-gt-xs="66">

    <input ng-model="title" placeholder="Title...">

</md-input-container>

<md-input-container class="md-block" flex="100" flex-gt-xs="33">

    <input ng-model="link" placeholder="Title..." ng-keypress="CtrlNameHere.save($event)">

</md-input-container>

我从内部调用指令(在本例中)ContractsController,但这需要改变

<div layout="column" layout-gt-xs="row" class="new-entry-line" myprefix-link-attachment>


总之,我想自由使用该指令,同时能够调用正确的控制器来处理CtrlNameHere.save()方法。

您还没有问任何问题。 我想你想问的是,当你在不同控制器的作用域中使用相同的指令时,如何调用控制器的函数

您需要做的是将指令传递给它将调用的函数

因此,在指令中,您需要接受controllerFn属性,如下所示:

scope: {
    controllerFn: "="
}
<myprefix-link-attachment controller-fn="someControllerFunction">
使用指令时,将控制器的功能传递给它,如下所示:

scope: {
    controllerFn: "="
}
<myprefix-link-attachment controller-fn="someControllerFunction">

您是否尝试将save方法传递给指令?它如何知道要传递给哪个控制器?我想我可以使用$parent,但我读到了不建议使用的内容?您可以创建一个服务来同步datacontrollerFn,需要将其设置为引用属性,例如:
scope:{controllerFn:'&}
。此外,为组件属性(如“保存时”)设置适当的名称也是一种很好的做法,因为它不仅可以在控制器中用于整个应用程序。@VasylRomanchak是正确的,它需要设置为引用属性。现在的问题是$event没有传递给我的控制器-我如何在控制器中获取title/link值以保存它们?