在angularjs中的函数中获取$ scope的值

时间:2015-04-28 11:44:14

标签: javascript angularjs

在角度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>为什么没有显示。什么时候我甚至做到了。在这个功能的外面它就像魅力一样。

任何解决方案?

3 个答案:

答案 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。