【发布时间】:2016-06-08 22:38:46
【问题描述】:
我正在编写一个 Angular 1.5 指令,但在尝试在绑定数据存在之前对其进行操作时遇到了一个令人讨厌的问题。
这是我的代码:
app.component('formSelector', {
bindings: {
forms: '='
},
controller: function(FormSvc) {
var ctrl = this
this.favorites = []
FormSvc.GetFavorites()
.then(function(results) {
ctrl.favorites = results
for (var i = 0; i < ctrl.favorites.length; i++) {
for (var j = 0; j < ctrl.forms.length; j++) {
if (ctrl.favorites[i].id == ctrl.newForms[j].id) ctrl.forms[j].favorite = true
}
}
})
}
...
如您所见,我正在进行 AJAX 调用以获取收藏夹,然后对照我的绑定表单列表检查它。
问题是,即使在绑定被填充之前,承诺就已经实现了......所以当我运行循环时, ctrl.forms 仍然未定义!
如果不使用 $scope.$watch(这是 1.5 组件吸引力的一部分),我如何等待绑定完成?
【问题讨论】:
-
你试过 $timeout 吗?它可能会自行触发生命周期摘要。或者 $onInit
标签: javascript angularjs components