$ rootScope在AngularJs中没有与我合作

yed*_*dez 4 javascript angularjs

我在我的函数中得到了我的$ rootScope的值但是我想在我的Controller的所有函数中得到thsi值以将它传递给另一个控制器:你能帮帮我吗

我的HTML:

<input type="checkbox"   ng-model="u.selected" data-ng-click="consoleClient(u)">
Run Code Online (Sandbox Code Playgroud)

我的脚本代码:

$scope.client = {
    id : null,
    nom : '',
    nberPhone : '',
    adresse : '',
    selected : false
};

$scope.consoleClient = function(client) {
    $rootScope.test = client;

    console.log(" lll "+$rootScope.test);
};
console.log(" aaaa "+$rootScope.test);
Run Code Online (Sandbox Code Playgroud)

控制台日志返回正确的结果但是第二个Out函数返回undefined.你能解释一下我的原因吗?

Alo*_*tan 7

是的,因为你没有调用$scope.consoleClient它所以它没有在函数范围之外定义.调用函数后它会起作用:

$scope.consoleClient = function(client) {
    $rootScope.test = client;

        console.log(" lll "+$rootScope.test);
};
$scope.consoleClient('clientName');
console.log(" aaaa "+$rootScope.test); // output: ' aaaa clientName'
Run Code Online (Sandbox Code Playgroud)

如果要监视函数外部变量的更改,可以执行以下操作:

$scope.$watch(function() {
    return $rootScope.test;
}, function(newValue, oldValue) {
    console.log('Old value: ', oldValue);
    console.log('New value: ', newValue);
}, true); // Note the "true" - Compare the object using "angular.equal"
Run Code Online (Sandbox Code Playgroud)