如何获取angular属性指令的原始值

时间:2016-06-23 01:50:47

标签: angularjs angularjs-directive

我想检索指令属性的原始值,但它一直在检索文字属性名而不是原始值

- 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
    }
});

2 个答案:

答案 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/以查看我的意思