Angularjs 从指令访问父控制器方法?
我有一个关于物品搜索的问题 假设我有:Angularjs 从指令访问父控制器方法?,angularjs,model-view-controller,angularjs-directive,angularjs-scope,angular-services,Angularjs,Model View Controller,Angularjs Directive,Angularjs Scope,Angular Services,我有一个关于物品搜索的问题 假设我有: 带有要显示的结果项的控制器 一种服务,它执行搜索查询并与控制器交互,从而更新结果项以显示 一个指令,它的形式包含搜索字段的所有输入 其中一个按钮是“查看更多项目”按钮。只有当我从查询中收到的响应告诉我有更多的项目要查看时,才会显示它 我在服务中创建了一个函数,该函数检查此属性,并将布尔值返回到指令,该指令使用它,并在按钮上显示或隐藏它 问题是我不知道如何在此范围内与控制器进行交互 指令是否应调用一个服务方法,并且该方法应以某种方式与控制器交互 在此之前,我
<form ng-submit="myController.submitSearch">
<search-options-directive></search-options-directive>
<button type="submit">
</form>
但是现在我要做的是把表单和按钮放在
<search-options-directive></search-options-directive>
所以现在我无法直接调用控制器方法
我应该如何处理这个问题?我的答案对您的标题“从指令访问父控制器方法”更为具体。在指令中,您必须添加要共享的方法:
return {
scope: {
myFavoriteMethod:'&'
}
}
然后:
<search-options-directive my-favorite-method="myMethodOnTheParentController"></search-options-directive>
但在您的示例中,您使用的是ng submit按钮,它将表达式绑定到onsubmit事件(覆盖原始提交操作),这与ng click不同,但您应该能够使用相同的模式。这听起来像是“require”的主要示例搜索指令上的选项-简而言之:创建一个控制器为“项目显示控制器”的外部指令。然后,您可以在搜索指令中要求外部指令,瞧,您可以直接访问控制器。这里有一些指定require的compile服务的参考:另一个答案可能更好,但也有
范围。$parent
属性。感谢您的反馈。我真正想知道的是做我想做的事情的最佳实践,因为我不知道该采取什么方法,因为我似乎有3个非常相互依赖的元素。最佳实践将遵循基本的物业封装等。为此,我建议按照您已经开始做的那样进入它自己的指令,然后修改我的示例,使用ng submit而不是ng-click@Jeffarese为您做了这项工作,您可以将其应用于您的需要吗?这样,我就不能在调用的方法(父控制器)中使用此指针。它总是使用这个指令。
ng-click="myFavoriteMethod()"