Nat*_*han 4 javascript angular
以下是我尝试基于Angular教程进行的工作。
export class DashboardComponent implements OnInit {
title = 'Current Robots';
private sobots: Robot[];
constructor(
private router: Router,
private sobotService: RobotService) {
}
getRobots() {
this.sobotService.getRobots().then(sobots => Array.prototype.push.apply(this.sobots, sobots.data));
}
ngOnInit() {
this.getRobots();
}
gotoDetail(sobot: Robot) {
let link = ['/detail', sobot.Id];
this.router.navigate(link);
}
Run Code Online (Sandbox Code Playgroud)
和看法
<h3>{{title}}</h3>
<div class="grid grid-pad">
<div *ngFor="let sobot of sobots" (click)="gotoDetail(sobot)" class="col-1-4">
<div class="module sobot">
<p>HostKey</p>
<h4>{{sobot.HostKey}}</h4>
</div>
</div>
</div>
<sobot-search></sobot-search>
Run Code Online (Sandbox Code Playgroud)
sobots.data看起来正在按预期返回数据对象-但是,直到我单击任何按钮/路由/任何事件后,它仍然没有更新。
控制台中未显示任何错误,我很困惑!
我继续尝试确保它只是将数据添加到原始数组对象中,但是这似乎还是行不通的!
因此,事实证明sobotService返回的是q.js承诺而不是ES6承诺。我相信这可能就是为什么它没有像我在《英雄指南》中那样更新的原因。
通过强制其在区域中进行更新,例如:
this.sobotService .getRobots().then(ODataRobots => {
this.zone.run(() => this.sobots = ODataRobots.data);
});
Run Code Online (Sandbox Code Playgroud)
诺言解决后,它设法更新了视图。
我可能必须弄清楚是否有一种简单的方法可以从我正在使用的库(o.js)中删除q.js承诺,但与此同时,它可以按预期运行!
| 归档时间: |
|
| 查看次数: |
2394 次 |
| 最近记录: |