我正在制作包含大量数据的表格(使用ag-grid - http://www.ag-grid.com/,但这并不重要。)
在该表中,我想触发角度服务以打开模态(带有详细信息)。
问题是我不想使用angular的指令(我有超过10000条记录)只使用像<a on-click="angular.service('modal').method('open-modal').params({id:1})">Open modal</a>
这样的东西
有可能吗?
答案 0 :(得分:2)
在外面调用与角度相关的东西是一种非常糟糕的做法(它也可能影响摘要/应用循环而不能按预期工作)。也许还有另一种选择:
如果您在控制器内,可以将服务保存在范围变量中,然后使用ng-click调用服务中的功能。
IMPORTXML
然后,在HTML中:
var Controller=function($scope, YourService) {
$scope.myService=YourService;
};
Controller.$inject=['$scope', 'YourService'];
app.controller('Controller', Controller);
如果您仍然需要在其外部使用与角度相关的方法,那么您应该能够调用&#34; scope()&#34;以这种方式运作:
<a ng-click="myService.method('open-modal').params({id:1})">Open modal</a>
您仍需要将服务分配给范围变量,以便能够以这种方式访问它。 <a on-click="angular.element('#idOfTagWithNgController').scope().myService.method('open-modal').params({id:1})">Open modal</a>
当然是带有idOfTagWithNgController
属性的HTML标记的ID(如果没有ID,则可以添加它)。请注意,这仍然是不好的做法,应该避免
答案 1 :(得分:1)
您可以编写自己的服务并将其注册为工厂,而不是将其注入控制器并在触发ng-click时从控制器调用服务方法