我对某个关于商品搜索的页面有疑问。
让我说我有:
其中一个按钮是“查看更多项目”按钮。只有在我从查询中收到的响应告诉我还有更多要查看的项目时,才会显示它。
我在服务中创建了一个函数,该函数检查此属性并返回一个布尔值到指令,该指令使用它与按钮上的ng-show来显示或隐藏它
问题是我不知道如何与此范围内的控制器进行交互。
指令是否应该调用一个服务方法,并且此方法应该以某种方式与控制器进行交互?
在此之前,我使用表单标签(在指令范围之外)包装指令,然后我可以使用ng-submit在控制器上执行某些操作来调用服务即可。像这样:
<form ng-submit="myController.submitSearch">
<search-options-directive></search-options-directive>
<button type="submit">
</form>
但是现在我要做的是将表单和按钮放在
中<search-options-directive></search-options-directive>
所以现在我没有权限直接调用 controller 方法。
我该如何处理?
答案 0 :(得分:0)
我的答案对你的标题更具体,“从指令访问父控制器方法。”在您的指令中,您必须添加要共享的方法:
return {
scope: {
myFavoriteMethod:'&'
}
}
然后开始:
<search-options-directive my-favorite-method="myMethodOnTheParentController"></search-options-directive>
在你的指令中,你需要添加到你的html:
ng-click="myFavoriteMethod()"
但在您的示例中,您使用的是ng-submit按钮,它将表达式绑定到onsubmit事件(覆盖原始提交操作),这与ng-click不同,但您应该能够使用相同的模式。