我在這裏面臨一個小問題。我綁定一個對象數組與視圖與一些初始值。然後我將更多的值推入該數組中,並在值被推入後在視圖中刷新。但是當它們刷新的時候,我需要使用jQuery來隱藏它們並進行一些其他計算。綁定需要時間更新View - Angular 2
我的代碼 -
Items:Array<Item> = [];
然後我推值這個數組的函數內 -
var allItems = [];
allItems = getData();
allItems.forEach((Item)=>{
this.Items.push(Item);
});
this.Items.forEach((Item)=>{
jQuery('#'+Item.id).hide();
jQuery('#'+Item.id)[0].style.top = this.getTopPosition();
jQuery('#'+Item.id)[0].style.left = this.getLeftPosition();
});
但不幸的是,jQuery是無法找到該項目與在DOM這個Id (視圖)。我使用調試器來查找出現了什麼問題,並發現DOM尚未使用Items更新。
要臨時解決這個問題,我使用的setTimeout() -
setTimeout(()=>{
this.Items.forEach((Item)=>{
jQuery('#'+Item.id).hide();
jQuery('#'+Item.id)[0].style.top = this.getTopPosition();
jQuery('#'+Item.id)[0].style.left = this.getLeftPosition();
});
},1);
現在我需要一個更清潔,更好的方式來使此功能工作。模型中發生更改時是否會觸發任何事件?或者,也許我可以訪問變化檢測器?訂閱改變探測器?
任何幫助表示讚賞。 謝謝。
儘量不要混合角和jquery – Gianmarco