Javascript 无法访问范围';指令中的属性
我正在尝试将数据传递到指令的链接函数。当我在console.log中记录隔离作用域时,我看到了我想要的所有属性(Javascript 无法访问范围';指令中的属性,javascript,angularjs,Javascript,Angularjs,我正在尝试将数据传递到指令的链接函数。当我在console.log中记录隔离作用域时,我看到了我想要的所有属性(scope.x、scope.y和scope.categories),它们的值是字符串。但由于某些原因,我无法访问指令中作用域的categories属性 {{categories}在控制器中定义为对象数组 main.html: <div bar-chart bar-data='categories' bar-x='violation_catego
scope.x
、scope.y
和scope.categories
),它们的值是字符串。但由于某些原因,我无法访问指令中作用域的categories属性
{{categories}
在控制器中定义为对象数组
main.html:
<div bar-chart
bar-data='categories'
bar-x='violation_category'
bar-y='["number_violations"]'></div>
app.directive('barChart', function(){
return {
restrict: 'A',
scope: {
x: '@barX',
y: '@barY',
barData: '='
},
link: function(scope, elem, attrs){
console.log(scope) // shows an object that has barData array
console.log(scope.barData) // undefined
console.log(scope.x) // string
console.log(scope.y) // string
}
}
})
在控制器$scope.categories中,按如下方式填充:
Violation.categories().then(function(res){
$scope.categories = res.data
})
如果违规
服务的行为如下:
categories: function(){
return $http.get('/api/violations/categories')
}
这样您将无法访问
类别中的真实对象
;使用“=”
范围绑定(并从属性中删除{{…}}
)。我现在在尝试访问(请参阅更新)时未定义,如果服务尚未返回,则它应该是未定义的。。。执行link()
时,很可能服务尚未返回,scope.categories
自然未定义。当服务返回时,作用域中会发生什么?(你可能会发现有用的)理解。必须$watch
更改范围<代码>范围。$watch('barData',function(){//do stuff})