【问题标题】:Using the Battery Manager in angular js在 Angular js 中使用电池管理器
【发布时间】:2016-03-09 19:22:10
【问题描述】:

我试图将电池管理器对象连接到角度控制器,但是当navigator.getBattery() 的承诺完成时,控制器对象似乎没有更新。这是我想出的

(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);
}]);
})();

用这个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>

也可以在jsfiddle上找到here

【问题讨论】:

    标签: javascript angularjs navigator


    【解决方案1】:

    您可以将控制器保留为语法。在https://jsfiddle.net/fnnruzjw/1/ 上查看我更新的小提琴。手头有几个问题:

    您需要使用 $scope.$apply。

    $window.navigator.getBattery().then(function(battery){
    	$scope.$apply(function() {
        setBattery(battery);
      });
    });

    你的 this 指的是错误的 this(我把它改成了 vm 作为一个流行的约定)。

    在重新分配电池对象时,您丢失了对电池对象的引用。我使用 angular.copy 来保留参考。

    function setBattery(battery){
      angular.copy(battery, vm.bat);
    	console.log(vm.bat);
    }

    【讨论】:

      【解决方案2】:

      battery 分配给$scope.bat(在你的控制器中也注入$scope)。你可能也需要$scope.$apply()。几乎用$scope替换this

      【讨论】:

      • 我会将 $scope.$appy() 放在哪里?为什么它不能用作控制器属性?
      • 对于组织我更喜欢将其用作控制器属性而不是变量范围
      • 在您的视图中,您只能访问$scope 中的属性。您需要使用$scope.$apply(),因为bat 是在异步函数中设置的,而不是角度正常摘要循环的一部分。
      • 有没有办法将其添加到 $scope.$watch 而不将其分配给作用域变量?
      • 电池管理器不断更新,但即使我执行 $scope.$apply() 后示波器似乎也没有看到它
      猜你喜欢
      • 1970-01-01
      • 2020-04-13
      • 1970-01-01
      • 2016-06-06
      • 1970-01-01
      • 2021-01-17
      • 1970-01-01
      • 1970-01-01
      • 2013-05-17
      相关资源
      最近更新 更多