在角度js中的函数中无法获取$ scope的值
这是它的样子
module.controller('MainController', function($scope, $window, $rootScope, checkConnection) {
$scope.online = false;
$scope.deviceReady = false;
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
checkConnection.checkCon($scope);
$scope.checkInetNetwork = $rootScope.checkInetNetwork;
if ($rootScope.checkInetNetwork == "true") {
$scope.online = true;
} else {
$scope.online = false;
}
}
});
我无法弄清楚为什么<p ng-show="online">ThAnk You Thank you</p>
为什么没有显示。什么时候我甚至做到了。在这个功能的外面它就像魅力一样。
任何解决方案?
答案 0 :(得分:2)
因为您正在更改角度摘要周期之外的范围值。
您可以调用$ apply来运行摘要周期来修复它
function onDeviceReady() {
checkConnection.checkCon($scope);
$scope.checkInetNetwork = $rootScope.checkInetNetwork;
if ($rootScope.checkInetNetwork == "true") {
$scope.online = true;
} else {
$scope.online = false;
}
$scope.$apply();
}
function onDeviceReady() {
checkConnection.checkCon($scope);
$scope.checkInetNetwork = $rootScope.checkInetNetwork;
$scope.online = $rootScope.checkInetNetwork == "true";
$scope.$apply();
}
答案 1 :(得分:1)
你需要运行一个$scope.$apply
,因为在Angular的知识之外发生了一些事情。
function onDeviceReady() {
checkConnection.checkCon($scope);
$scope.checkInetNetwork = $rootScope.checkInetNetwork;
if($rootScope.checkInetNetwork == "true"){
$scope.online = true;
}
else
{
$scope.online = false;
}
$scope.$apply();
}
答案 2 :(得分:0)
使用$rootScope.online = false
代替$scope.online = false
,这样您就可以在任何地方访问$ scope。