1

我的模板 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>

那么,我如何在我的角度指令中使用这个变量?(我不想在我的指令中进行 Ajax 调用)

谢谢 !

4

2 回答 2

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>
于 2013-08-05T19:17:22.993 回答
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
}]);
于 2013-10-28T10:57:57.080 回答