2014-10-04 42 views
-1

我有简单的指令,这样指令不能访问范围数据源

查看:

<div ng-if="newReg.checkedDomains.length>0">  
    <div extension-list="newReg.checkedDomains"></div> 
</div> 

指令:

angular.module('starweb') 
.directive('extensionList', function() { 
    return { 
     link: function (scope, element, attrs) { 

      var data = scope[attrs['extensionList']]; 
      console.log(data); 
     }, 

     template:"<div>test</div>" 
    } 
}); 

控制台日志总是显示不定?为什么指令不能访问extensionList源数据?

+1

范围[ATTRS [ 'extensionList']]转换为范围[ 'newReg.checkedDomains']其中没有定义。它应该是scope.newReg.checkedDomains或范围[newReg] [checkedDomains] – 2014-10-04 03:50:32

回答

0

extensionList属性拥有一个绑定表达式,带点的属性链,不能直接使用对象上的括号表示法进行访问。所以你只需要eval就可以了。如果它只是直接在范围上的一个属性,那么你在范围上试图执行的括号表示法已经起作用了,但在实际情况中,你是一个更低的级别(提供了范围的属性名称和属性名称是相同的)。

尝试: -

var data = scope.$eval(attrs.extensionList); 
console.log(data); 

Demo

+0

感谢您的帮助。它似乎工作正常,但不知何故,在我的情况下,它总是返回第一个对象,也许我做错了某处。我会弄清楚。 thnx再次 – 2014-10-04 04:04:18