我想检索指令属性的原始值,但它一直在检索文字属性名而不是原始值
- HTML
<input my-directive="5==5" />
<div my-directive="isFoodReady()">
<!--some content-->
</div>
- JS
myModule.directive('myDirective',function(){
restrict: 'A',
priority: 0,
link:function(scope,element,attr){
console.log(attr.myDirective);
//displays "5==5","isFoodReady()" instead of true
}
});
答案 0 :(得分:0)
尝试console.log(eval(attr.myDirective));
答案 1 :(得分:0)
在这里,它正在运作
angular.module('app', [])
.directive('myDirective', function() {
return {
restrict: 'A',
priority: 0,
link: function(scope, element, attr) {
console.log(eval(attr.myDirective));
}
}
});
function isFoodReady() {
return true;
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="app">
<input my-directive="5==5" />
<div my-directive="isFoodReady()">
<!--some content-->
</div>
</div>
请记住,使用eval是极其危险并且整体上是一种可怕的做法。你不应该在指令的属性上运行javascript,因为它会使代码保持开放,即使是代码注入技术的简单。
我强烈建议您访问https://xss-game.appspot.com/以查看我的意思