2016-06-09 139 views
-1

我有以下指令Angularjs。访问变量指令范围

var chartDir = function() { 
    return { 
     scope: { 
     stat: '=' 
     }, 
     link: function (scope, element, attr) { 
     console.log(scope); 
     return; 
     } 
} 

HTML

<svg chart stat="stat"></svg> 

因此,在这种情况下,我可以在控制台中看到该范围内有一个名为stat属性(一个数组,不是空的!)

这里是截图...

enter image description here

但是,如果我做console.log(scope.stat)那么我只得到undefined。我在其他图表中有相同的指令,它工作正常。但在这里我不明白为什么我不能去scope.stat

UPD访问: 更多的HTML

<div class="chart-container container" ng-show="statLoaded"> 
    <div class="text col"> 
    <div class="item" ng-repeat="item in stat | limitTo: middleIndex"> 
     <div class="color"> 
     <div class="sample" color-sample color="item.color"></div> 
     </div> 
     <div class="amount"> 
     {{ item.amount }} 
     </div> 
     <div class="text"> 
     {{ item.text }} 
     </div> 
    </div> 
    </div> 
    <div class="col"> 
    <svg chart stat="stat"></svg> 
    </div> 
... 

所以我看到的所有项目,并指令“颜色样本”的作品好。所以'stat'被加载。那么,为什么'颜色样本'指令起作用,'图表'不起作用?

+0

貌似对指令的父'stat'属性执行你的指令之前尚未确定。当你看到控制台窗口时,已经有足够的时间让'stat'属性被设置为 –

+0

。我了解控制台。但是,我怎么能通过统计来宣传。接近这个块,我有另一个'stat',它的加载非常好,所以'stat'被加载并存在(在控制器中,应该传递给这个derective)。 我也添加了范围$ watch(scope.stat,function(){.. to derective,但它仍然是undefined。 我怎样才能渲染我的感觉,当我得到'统计'加载? – Filosoff

回答

0

解决方案是

scope.$watch(attr.stat, function() { 

,而不是

scope.$watch(scope.stat, function() {