Javascript 检查指令是否具有属性
我有以下代码Javascript 检查指令是否具有属性,javascript,angularjs,Javascript,Angularjs,我有以下代码 <my-directive></my-directive> 像这样: <my-directive my-option></my-directive> 我该怎么做?一旦我有了属性,它的值应该是真的,对吗?我已经用=符号绑定了属性。您不应该在此处检查$scope.my选项,而是检查$scope.myOption CamelCased属性在HTML代码中仅为snake大小写;应该在所有剩余的JavaScript源代码中使用camel
<my-directive></my-directive>
像这样:
<my-directive my-option></my-directive>
我该怎么做?一旦我有了属性,它的值应该是真的,对吗?我已经用
=
符号绑定了属性。您不应该在此处检查$scope.my选项,而是检查$scope.myOption
CamelCased属性在HTML代码中仅为snake大小写;应该在所有剩余的JavaScript源代码中使用camelCase引用它们
因此,您的HTML标记应该如下所示:
<my-directive my-option></my-directive>
甚至可能不需要$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
}
}
}
});
您不应该在此处检查$scope.my选项,而是检查$scope.myOption
CamelCased属性在HTML代码中仅为snake大小写;应该在所有剩余的JavaScript源代码中使用camelCase引用它们
因此,您的HTML标记应该如下所示:
<my-directive my-option></my-directive>
甚至可能不需要$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
}
}
}
});
如果没有独立作用域(也可以使用独立作用域),可以直接检查属性:
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);
}
}
}
});
如果没有独立作用域(也可以使用独立作用域),可以直接检查属性:
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);
}
}
}
});
在指令的link函数中检查:link:function(scope,elem,attr){}在指令的link函数中检查:link:function(scope,elem,attr){}myOption:'=?'
更好myOption:'=?'
更好请解释最后一行option=$parse(attrs.myOption)(scope)代码>。请引用用于它的技术术语,我们也可以使用$parse服务()来解析角度表达式。在本例中,它只是由指令的“my option”属性给出的范围属性的名称$parse返回一个函数,第一个参数是上下文,这里是我们的作用域,表达式将在其上求值。简单地说:它获取由myoptions属性设置的scope属性(变量)的值。你也可以这样写:scope[attrs.myOption]
ok。有些类似于$compile
。请解释最后一行option=$parse(attrs.myOption)(范围)代码>。请引用用于它的技术术语,我们也可以使用$parse服务()来解析角度表达式。在本例中,它只是由指令的“my option”属性给出的范围属性的名称$parse返回一个函数,第一个参数是上下文,这里是我们的作用域,表达式将在其上求值。简单地说:它获取由myoptions属性设置的scope属性(变量)的值。你也可以这样写:scope[attrs.myOption]
ok。有些类似于$compile
。我将阅读差异