AngularJS:无法从指令中访问范围

时间:2013-03-09 09:41:02

标签: angularjs angularjs-directive

model.data包含以下内容:

{
    "name": "Jamie",
    "age": 25
}  

我的指令看起来像:

<my-directive data="model.data"></my-directive>  

我已将该指令定义如下:

app.directive('myDirective', function(){  
    return {
        restrict: 'E',
        scope: {
            data: '='
        },
        templateUrl: 'grid.html',
        controller: function($scope) {
            console.log($scope);
            console.log($scope.data);
        }
    }
}

问题是console.log($scope)返回$ scope中的值。我可以看到它包含数据:

{
    $$asyncQueue: Array[0],
    $$childHead: null,
    ...
    ...
    data: Array[1]
}

但是,console.log($scope.data)会返回undefined。有什么线索的原因?

1 个答案:

答案 0 :(得分:9)

任何时候像console.log($scope);这样的东西都有效,但是console.log($scope.someProperty);没有,这是因为someProperty是因为解析了一个承诺(例如$ http调用或者是用$ q创建的承诺。

第一个日志似乎有效,当实际发生的情况是,当您手动查看日志条目时(即,单击以展开其内容),该值已填充/已解决。

在你的控制器中,你需要$观察属性,并设置监视回调函数,以便在数据到达/解析后做你想做的任何事情。