检查指令是否具有属性
Check if directive has an attribute
>我有以下代码
<my-directive></my-directive>
我想评估其中的以下特雷纳:
{{ $scope.my-option ? 'YES' : 'NO' }}
喜欢这个:
<my-directive my-option></my-directive>
我该怎么做?一旦我有了属性,它的评估结果应该为 true,对吧?我已经将属性与=
符号绑定在一起。
您不应该在此处检查$scope.my-option
,而应检查$scope.myOption
。
CamelCased 属性在 HTML 代码中只采用蛇形大小写;它们应该在所有剩余的 JavaScript 源代码中使用 camelCase 引用。
因此,您的 HTML 标记应该是这样的:
<my-directive my-option></my-directive>
但是你的AngularJS表达式将是:
{{ $scope.myOption ? 'YES' : 'NO' }}
甚至可能不需要$scope
,什么会减少表达式
{{ myOption ? 'YES' : 'NO' }}
此外,如果您不想在 HTML 中显式添加检查作为观察程序,则可以使用指令的 link 函数来执行此操作。文档对此进行了更详细的解释。
在您的指令中,像以下代码片段一样使用它:
angular
.module('myModule')
.directive('myDirective', function() {
return {
restrict: 'A',
scope: {
myOption: '=?'
},
link: function(scope, element) {
if (scope.myOption) {
// you have the attribute
} else {
// you don't
}
}
}
});
如果您没有隔离范围(并且也适用于隔离范围),您可以直接检查 attrs:
angular
.module('myModule')
.directive('myDirective', function($parse) {
return {
restrict: 'A',
link: function(scope, element, attrs) {
var option;
if (attrs.hasOwnProperty('myOption')) {
// if attr is plain string
option = attrs.myOption;
// or parse from a scope property
option = $parse(attrs.myOption)(scope);
}
}
}
});
相关文章:
- 检查对象的所有属性是否未定义
- 检查来自不同数组的两个元素的一个属性是否相等
- 正在检查属性的属性是否存在
- 在 Forerunner 数据库集合中创建主键时,key 属性是否可以位于集合对象的对象内部
- 使用 Chai - 如何检查对象属性是否包含 DOM 元素
- Ember 1.0 预发行版支持属性是否已更改
- VueJS:检查属性是否具有来自其他属性的值
- 创建nonce并将其输出为数据属性是否存在漏洞
- 检查数组中的对象属性是否与具有相同ID的另一个对象重复
- 如何在Ember.js中创建一个计算属性来查看单个EmberData属性是否脏
- Javascript-在检查对象属性是否存在时避免异步竞争条件
- 如何指定输入元素中允许的最大字符数 - 设置 maxlength 属性是否足够
- 如何检查主干模型中的嵌套属性是否已更改
- HTML 文本框值属性是否安全免受 XSS 攻击
- 在 HTML 定位点中指定“语言”属性是否会更改事件行为
- 在灯泡阶段检查对象属性是否存在
- 给定元素本身的 aria-live 属性是否可以使用 javascript 动态设置
- 立即调用的属性是否可以引用它所分配到的对象
- 检查 css 属性是否应用了 !重要属性
- 检查数据属性是否具有值