【发布时间】:2013-10-17 03:43:58
【问题描述】:
我真的很喜欢 Angular 中的新 ng-click 指令现在自动包含触摸事件的功能。但是,我想知道是否可以从我的自定义指令访问该触摸事件服务?我有很多指令要求我将单击事件绑定到给定元素,但我只是使用典型的 jquery 语法(例如:element.on('click', function(){ ... }))来执行此操作。有没有办法可以将ng-click 事件绑定到指令中的元素?无需在视图的 HTML 中手动将ng-click 标记放在我的元素上...?
我希望能够利用点击和触摸事件的力量。我显然可以导入一个库(例如 HammerJS 或 QuoJS),但我不想这样做,特别是因为 Angular 已经在这样做了。
我可以访问$swipe 服务并将不同的元素绑定到该服务,但是ngTouch 是否有类似的服务?
作为参考,这是我何时想要这样做的一个示例:
mod.directive('datepicker', ['$timeout', function($timeout){
return {
link: function(scope, elem, attrs){
var picker = new DatePicker();
elem.on('click', function(e){
picker.show();
});
// I would rather do something like:
// elem.on('ngTouch', function(){ ... });
//
// or even:
// $ngTouch.bind(elem, {'click': ..., 'touch': ...});
}
}
}]);
更新:如下所述,ng-click 指令的源代码是here。谁能找到一种利用该代码并将其转变为“可绑定”服务的方法?
【问题讨论】:
-
你的意思是这样的吗:stackoverflow.com/questions/15279244/…
-
意思是,只是将
elem元素包装在另一个具有ng-click属性的元素中?或将ng-click属性添加到elem元素?我想这些会起作用......但它似乎有点“hack-ish”(尤其是在那篇帖子中提到的$compile问题)......想法? -
据我了解,
ngTouch模块实现了对ngClick指令的替换(参见github.com/angular/angular.js/blob/master/src/ngTouch/directive/…),尝试注入ngClickDirective并按照这篇文章的建议进行操作:groups.google.com/d/msg/angular/xBFABCLv4XI/maoKgWubzQ0J -
好的,我喜欢这个主意。所以我将
'ngClickDirective'导入到我的自定义指令中,这给了我一个ngClickDirective变量,但是我该怎么处理它呢?我刚试过,所有ngClickDirective对象都是:[{"priority":0,"name":"ngClick","restrict":"A"}]...?
标签: angularjs