2013-08-05 52 views
1

我在我的模板html中創建了一個變量(從php創建),我需要在我的角度指令中使用這個變量(目的是用jquery flot創建一個圖表, PHP方面)。在jQuery Flot中分享HTML和AngularJS指令之間的變量

我的HTML:

<script type="text/javascript"> 
    var graphData = [{ 
      data : [[1375574400000, 20], [1375660800000, 30], [1375747200000, 35], [1375833600000, 39], [1375920000000, 45]], 
      color: '#478e9c' 
      }]; 
</script> 

所以,我怎麼能在我的角度指令使用這個變量? (我不想在我的指令中打一個Ajax電話)

謝謝!

+0

方式你有它decl ared是一個全局的,所以它可以在'graphData'處直接訪問。 –

回答

0

好吧,我回來了更多的經驗。 最好的解決方案是在HTML中聲明服務並在指令中使用它。

HTML:

<script type="text/javascript"> 
    var graphData = [{ 
      data : [[1375574400000, 20], [1375660800000, 30], [1375747200000, 35], [1375833600000, 39], [1375920000000, 45]], 
      color: '#478e9c' 
      }]; 
    app.value("GraphDatas", graphData); 
</script> 

在JS:

app.directive("graph", ['GraphDatas', function(GraphDatas) { 
    // do stuff with my tab GrapDatas 
}]); 
0

您想要像這樣在控制器和指令之間建立連接。

控制器:

$scope.graphData = $http({ ... make your request }); 

指令:

// Add the scope attribute linked to your controller variable 

.directive('thingy', function() { 
    return { 
     scope: { 
      graphData: "=graphData" 
     }, 
     link: function(scope, elem, attr) { 
      ... 
     } 
    } 
}); 

如果不給你訪問範圍的變量,你可能需要使用 '@' 或 '&' 而不是「 ='在指令範圍聲明中。另一種選擇是從您的指令使用的html元素中獲取訪問權限。像這樣:

<div thingy graphData="graphData"></div> 
+0

但我不想使用$ http,我不想讓其他電話給我的PHP。 也許如果我在我的HTML中定義我的指令? – user1853777

+0

你第一次打電話給PHP?或者你從哪裏得到信息? –

+0

我使用Symfony2,所以我的信息來到控制器。我不想爲返回這些數據定義其他操作(在調用Mysql的同時我已經顯示了HTML的信息) – user1853777

相關問題