如何使用 ngTouch, 但对某些元素 有选择地禁用
它?也就是说,对于某些元素,我想使用原始ngClick
指令,而不是ngTouch提供的指令。像这样:
<button ng-click-original="myClickFn()">click me</button>
问题是,一旦您将ngTouch
模块包含在依赖项中,其版本ngClick
ngTouch.directive('ngClick'
将覆盖角核的原始ngClickDirective。因此,所有点击都将由ngTouch的版本处理,ng- click
因此您需要装饰模块中的ngCLick才能处理您的情况。我可以在这里想到几种方法:
方法1-创建自己的指令
由于它是一个自定义指令,因此如何创建一个ng-click-orig
可能不带有前缀的方法ng
。
.directive('ngClickOrig', ['$parse', function($parse) {
return {
compile: function($element, attr) {
var fn = $parse(attr["ngClickOrig"]);
return function handler(scope, element) {
element.on('click', function(event) {
scope.$apply(function() {
fn(scope, {$event:event});
});
});
};
}
};
}]);
演示版
方法2:-使用ng-Click指令的装饰器
另一种方法是在ngClickDirective上创建装饰器,查找特定的属性notouch
并执行常规点击,或使用ngTouch提供的原始属性。
.config(function($provide){
//Create a decoration for ngClickDirective
$provide.decorator('ngClickDirective', ['$delegate','$parse', function($delegate, $parse) {
//Get the original compile function by ngTouch
var origValue = $delegate[0].compile();
//Get set the compiler
$delegate[0].compile = compiler;
//return augmented ngClick
return $delegate;
/*Compiler Implementation*/
function compiler(elm, attr){
//Look for "notouch" attribute, if present return regular click event,
//no touch simulation
if(angular.isDefined(attr.notouch)){
var fn = $parse(attr["ngClick"]);
return function handler(scope, element) {
element.on('click', function(event) {
scope.$apply(function() {
fn(scope, {$event:event});
});
});
}
}
//return original ngCLick implementation by ngTouch
return origValue;
}
}]);
});
就像注释装饰器在第一次使用该指令之前不会运行,并且只会运行一次。
用法示例:-
<button ng-click="myClickFn()" notouch>click me</button> <-- see notouch attribute -->
<button ng-click="myClickFnTouch()">click me</button>
演示装饰器
我在Spring中使用注释定义了使用cron样式模式的调度作业。 cron模式存储在配置属性文件中。实际上有两个属性文件:一个默认配置文件,一个与环境相关的配置文件(例如dev、test、prod customer1、prod customer2等)覆盖了一些默认值。 我在spring上下文中配置了一个属性占位符bean,它允许我使用样式的占位符从属性文件中导入值。 作业bean如下所示: 我的上
问题内容: 我有HTML结构: 如何禁用外,如果我做 问题答案: 在角度对象上使用该方法: 或将对象作为方法的参数传递,然后调用方法: 在:
问题内容: 我正在使用注释在Spring中使用cron样式模式定义计划的作业。 Cron模式存储在配置属性文件中。实际上,有两个属性文件:一个默认配置,一个与环境相关的配置文件配置(例如dev,test,prod客户1,prod客户2等),并覆盖某些默认值。 我在春天的上下文中配置了一个属性占位符bean,这使我可以使用样式占位符从属性文件中导入值。 工作豆看起来像这样: 我的上下文XML的相关部
问题内容: 我有一个ng-repeat打印列表项。我想编写一个自定义过滤器,以便仅在条件为true时才打印列表项。 我似乎结构有误,因为似乎变量没有传递给过滤器。 index.php app.js 问题答案: 过滤器无法处理数组中的单个项目,它们会将整个数组转换为另一个数组。 看到这个plnkr *始终检查函数的参数。值并不总是很明显。 请参阅过滤器指南
问题内容: 我在ng-repeat中有以下代码: 如何使按钮处于禁用状态? 或者有没有一种方法可以用Javascript来完成,因此如下所示: 问题答案: 除指令外,在任何地方都不能使用DOM(包括属性检查)进行操作。您可以在范围内添加一些值,该值指示是否应禁用链接。 但是另一个问题是ngDisabled除了表单控件之外不能在其他任何东西上使用,因此您不能将其与一起使用,但可以将其与一起使用并将其
问题内容: 我有一个组件,有时有时需要呈现为和,有时需要呈现为。在我读来确定这一点,是。 如果存在,则需要将组件包装在中。否则,它将仅呈现为。 可能? 这是我现在正在做的,但是感觉可以简化: 更新: 这是最终的锁定。感谢您的提示,@ Sulthan! 问题答案: 只需使用一个变量。 或者,您可以使用辅助函数来呈现内容。JSX和其他代码一样。如果要减少重复,请使用函数和变量。