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
。有什么线索的原因?
答案 0 :(得分:9)
任何时候像console.log($scope);
这样的东西都有效,但是console.log($scope.someProperty);
没有,这是因为someProperty
是因为解析了一个承诺(例如$ http调用或者是用$ q创建的承诺。
第一个日志似乎有效,当实际发生的情况是,当您手动查看日志条目时(即,单击以展开其内容),该值已填充/已解决。
在你的控制器中,你需要$观察属性,并设置监视回调函数,以便在数据到达/解析后做你想做的任何事情。