传递给函数时,Angular get attr undefined

时间:2014-11-02 14:33:40

标签: javascript angularjs angularjs-directive

在编译阶段,我可以访问所有的attrs元素。那么,为什么当我通过这个attr功能我得到未定的

这是代码和plunker:

.directive('test', function() {
  return {
    restrict:'A',
    compile: function(ele, attr) {

       var div = angular.element( '<div ng-show="someCond(attr.some)">directive</div>' );

       ele.append(div)

       return function(scope, ele, attr) {
         scope.someCond = function(name) {
          console.log(name);
           return name == 'john';

         }
       }

    }
  }
})

http://plnkr.co/edit/ne4Z24VM1VmOcwAuUdCT?p=preview

3 个答案:

答案 0 :(得分:0)

你是否尝试用这些包装所有模块?

;(function(window,angular,undefined){
    //code here
})(window,window.angular);

这不是什么大问题,但关闭是好的:D

答案 1 :(得分:0)

{p} attr对象在scope中不可用 您可以这样做以使attr对象可用:

return function(scope, ele, attr) {
         scope.attr = attr;// look here
         scope.someCond = function(name) {
           console.log(name);
           return name == 'john';
         }
       }

答案 2 :(得分:0)

你基本上犯了两个错误。

第一个属性需要正确连接,所以这个语句必须是

var div = angular.element( '<div ng-show="someCond('+attr.some+')">directive</div>' );

其次,html中提供的值应该在引号内添加,因此h1应该是:

<h1 test some="'john'">test</h1>

见我的plunkr

http://plnkr.co/edit/QctVj9utJ88Xss8O11ze?p=preview