Ich versuche, das Batteriemanager-Objekt mit einem Winkel-Controller zu verbinden, aber das Controller-Objekt scheint nicht aktualisiert zu werden, wenn das Versprechen navigator.getBattery()
vollständig ist. Hier ist, was ich mir ausgedacht habe
(function(){
var app=angular.module('appBattery',[]);
app.controller('batteryController',['$window',function($window){
this.bat={};
this.level=this.bat.level;
$window.navigator.getBattery().then(function(battery){
setBattery(battery);
});
function setBattery(battery){
this.bat=battery;
console.log(this.bat);
}
console.log(this.bat);
}]);
})();
mit diesem HTML
<div ng-app='appBattery'>
<div id="battery-status-bar" ng-controller='batteryController as battery'>
<div class="battery">
<div class="power">
{{battery}}
<div class="level"></div>
</div>
</div>
<div class="percentage">{{battery.bat.level}}</div>
<div class="time">{{battery.bat.chargeTime +':'+battery.bat.dischargeTime}}</div>
</div>
</div>
es kann auch auf jsfiddle hier gefunden werden
Sie können Ihren Controller als Syntax behalten. Schauen Sie sich meine aktualisierte Geige unter https://jsfiddle.net/fnnruzjw/1/ an . Es gab ein paar Probleme:
Sie mussten $ scope. $ Apply verwenden.
$window.navigator.getBattery().then(function(battery){
$scope.$apply(function() {
setBattery(battery);
});
});
Ihr dies bezog sich auf das falsche dies (ich habe es geändert, um vm zu sein, wie es eine populäre Konvention ist).
Sie haben den Verweis auf Ihr Batterieobjekt verloren, als Sie es neu zugewiesen haben. Ich habe angle.copy verwendet, um die Referenz zu behalten.
function setBattery(battery){
angular.copy(battery, vm.bat);
console.log(vm.bat);
}
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen