回调函数跑出了Angular2的zone,所以需要注入ChangeDetector,显式地通知Angular2框架
进行更新,类似于Angular1.x中的apply():
import {ChangeDetectorRef} from "angular2/core"; //引入ChangeDetectorRef定义 constructor(@Inject(ChangeDetectorRef) cd) { //注入当前组件的ChangeDetectore this.cd = cd; this.records = []; } barcodeScanner() { var self = this; cordova.plugins.barcodeScanner.scan(function (result) { if (!result.cancelled) { self.records.unshift(result); alert(self.records.length); self.cd.markForCheck(); // 通知框架进行变化检查/Change Detection } }, function (error) { alert("发生了一个错误:" + error); }); }