我的模板html中有一个变量(从php端创建)我需要在我的angular指令中使用这个变量(目的是用php侧面的值创建一个带有jquery flot的图表)。
我的HTML:
<script type="text/javascript">
var graphData = [{
data : [[1375574400000, 20], [1375660800000, 30], [1375747200000, 35], [1375833600000, 39], [1375920000000, 45]],
color: '#478e9c'
}];
</script>
那么,我如何在angular指令中使用这个变量? (我不想在我的指令中进行Ajax调用)
谢谢!
答案 0 :(得分: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) {
...
}
}
});
如果这不允许您访问范围变量,则可能需要使用“@”或“&amp;”而不是指令范围声明中的'='。另一种选择是从你的指令使用的html元素中获取访问权限。像这样:
<div thingy graphData="graphData"></div>
答案 1 :(得分: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
}]);