angularjs-nvd3-directives值在函数外部

时间:2014-07-03 08:26:20

标签: javascript angularjs angularjs-directive angularjs-scope nvd3.js

我找不到从angular-nvd3-directives函数中检索值的方法,我尝试了所有内容,使用$emit$broadcast$scope.varName。 我在控制台中有正确的值printend,但我无法在模板中访问它。

我希望有人可以帮助我,这里是代码

在控制器中:

$scope.keyName="start"; // this works

$scope.$on("keyName", function(event, mass){
   $scope.keyName = mass; //correctly assigned as printed in console
   console.log( $scope.keyName); 
   console.log(event.currentScope); // here I find everything inside the scope 
                                    // I'm successuffly using elsewhere in the code
});

$scope.toolTipContentFunction = function(){
  return function(key, x, y, e, graph) {
     $scope.$broadcast("keyName", key);//this correctly broadcast (or emit) the value
     return  'Super New Tooltip' +
      '<h1>' + key + '</h1>' +
        '<p>' +  y + ' at ' + x + '</p>'
  }
}

这是HTML:

<div>
<!-- {{exampleData}} -->
<nvd3-pie-chart
  data="exampleData"
  id="colorExample"
  width="550"
  height="350"
  x="xFunction()"
  y="yFunction()"
  toolTips="true"
  objectequality="false"
  tooltipcontent="toolTipContentFunction()">
  {{keyName}}
  <svg height="250"></svg>
</nvd3-pie-chart>
</div>

exampleData被渲染,keyName不是。

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

好的,我找到了。我是初学者。

我必须将更改应用于变量,如:

$scope.$apply(function(){
   $scope.keyName = mass;
});

所以现在的功能是:

$scope.$on("keyName", function(event, mass){
   $scope.$apply(function(){
     $scope.keyName = mass;
   });      
 });

以下是有启发性的文章:http://jimhoskins.com/2012/12/17/angularjs-and-apply.html

答案 1 :(得分:0)

您可以将{{keyName}}放在nvd3-pie-chart之外。它没有任何差异。