Angularjs 访问指令内部的作用域属性
我打电话给指令的是:Angularjs 访问指令内部的作用域属性,angularjs,angularjs-directive,angularjs-scope,Angularjs,Angularjs Directive,Angularjs Scope,我打电话给指令的是: <latest-survey survey="latestSurvey"></latest-survey> console.log(范围)行输出范围: Scope {$id: "007", $$childTail: null, $$childHead: null, $$prevSibling: null, $$nextSibling: null…} $$asyncQueue: Array[0] $$childHead: null $$childTa
<latest-survey survey="latestSurvey"></latest-survey>
console.log(范围)
行输出范围:
Scope {$id: "007", $$childTail: null, $$childHead: null, $$prevSibling: null, $$nextSibling: null…}
$$asyncQueue: Array[0]
$$childHead: null
$$childTail: null
$$destroyed: false
$$isolateBindings: Object
$$listenerCount: Object
$$listeners: Object
$$nextSibling:
$$childScopeClass
$$phase: null
$$postDigestQueue: Array[0]
$$prevSibling: null
$$watchers: Array[3]
$id: "007"
$parent:
$$childScopeClass
$root: Scope
survey: Object
this: Scope
__proto__: Scope
如您所见,survey
列在那里,我可以在控制台中浏览它以查看其属性。但是,下一行console.log(scope.survey)
输出:
undefined
如何访问作用域内的此对象?是否在控制器中异步加载调查(最新调查)?
scope.survey
未定义的原因之一可能是请求未完成且项目为空
我建议您尝试使用一些虚拟数据设置
$scope.latestSurvey
,看看问题是否仍然存在。如果在指令模板中使用{{survey}
会发生什么?它列出了调查对象。我可以在模板中访问它,但由于某种原因不能在链接函数中访问。看起来非常好。尝试发布一个代码段或小提琴?尝试将控制台日志od scope.survey包装到$timeout
中,并记录超时0和100的情况。是的,它是异步加载的。我如何让它在指令作用域出现时更新它?您可以使用“@”而不是“=”,或者您可以添加一个加载屏幕并隐藏内容,然后在承诺完成后显示它。您必须使用angularjs$interceptor
。到目前为止,我看到的最好的实现是。或者您可以使用$watch
查看内容是否已更改,但使用$watch
则表明架构不好,usually@babbaggeii这个建议基本上就是我开始的答案with@salniro我对“@”有一些问题,有时不得不添加$watch
:/。但我也把你的票投了上去:)@CristiBerceanu$observe
上的attrs
在这种情况下可能更合适,但无论如何。我做了一个编辑,将其包括在OP中
undefined