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