我需要编写一个指令,像控制器一样在其中设置范围。它里面有输入和按钮。当某个按钮单击时,它会调用 $scope.refresh(),它将模型值传递给某些网格以使它们刷新。
大多数事情都很好。我将模型绑定到内部输入,使用 ng-click 绑定按钮单击事件并调用 refresh() 方法。但是在刷新功能中,我需要获取我的数据表的 id 并与之交互。现在我只能通过 ng-click 的方法参数来传递它。代码如下:
<div ng-controller="MyController">
<input ng-model="year"/>
........
<button ng-click="refresh('grid1, grid2')">Refresh</button>
<button ng-click="reset()">Reset</button>
</div>
我觉得它看起来很丑。如果grid ids需要在其他方法中重用,我要传很多次,但是不知道怎么把attr传给controller或者扩展Controller。有没有一种好方法可以实现这样的目标?
<div my-controller="MyController" grids='grid1, grid2' charts='chart1,chart2' ...>
<input ng-model="year"/>
......
<button ng-click="refresh()">Refresh</button>
<button ng-click="reset()">Reset</button>
</div>
或者这个想法很糟糕。我应该更好地使用另一种方式来完成这项工作吗?
更新:
用例是这样的:
我需要创建一个可重用的组件,其中包含一些输入(我猜是通过嵌入)作为查询。该组件与一些外部网格和图表绑定(不幸的是,它们还不是指令)。组件中有一些按钮可以使用 ng-click 触发 refreshGrids 或 refreshCharts 操作。它需要网格和图表 ID 在操作中调用它们的 setQuery() 方法并将模型(输入值)传递给该方法。这就是为什么我需要将 id 传递给组件或操作。
我使用 ng-controller 的原因是创建一个新的隔离范围。