【发布时间】:2017-04-07 15:17:45
【问题描述】:
我有一个看起来像这样的指令(省略了不相关的部分):
app.directive('rgReportContainer', function() {
return {
restrict: 'E',
scope: {
projectIds: '='
},
controller: controller
};
controller.$inject = ['$scope'];
function controller($scope) {
$scope.$watch('projectIds', function(projectIds) {
console.log(projectIds);
});
}
});
projectIds 的值以 [] 开头,因此记录的第一件事是 [],正如我所料。
令人困惑的是,projectIds 在一段时间后被 XHR 请求填充,但从未获取该值。
我的模板看起来像这样:
{{ reports.included_project_ids }}
<rg-report-container project-ids="reports.included_project_ids"></rg-report-container>
我可以在模板中看到reports.included_project_ids 从空变为非空。有一点我可以清楚地看到reports.included_project_ids 有数据,但在那个时候,我的$scope.$watch 没有获取新值。
非常感谢任何帮助。
【问题讨论】:
-
它应该着火了,能否请您重现这个问题 plnkr/fiddle?
-
仅供参考,在这里使用 Promise 可能比使用 $watch 更好。
-
@Casey 你可能是对的,尽管由于遗留代码的结构,在这种情况下这是不可能的。
标签: angularjs