如何访问ng-init或ng-checked中服务回调函数中声明的$scope变量

How to access $scope variable declared in service callback function in ng-init or ng-checked

本文关键字:函数 回调 服务 声明 变量 scope ng-checked 何访问 访问 ng-init      更新时间:2023-09-26

我有进行身份验证的service.js。成功时,从controller.js 执行服务回调函数

service.js:

 'use strict';
 angular.module('Authentication')
.factory('AuthenticationService', ['$http', '$cookieStore', '$rootScope','$timeout', '$location', '$window',
function ($http, $cookieStore, $rootScope, $timeout, $location, $window) {
        var service = {};

        service.Login = function (username, password, callback) {
            $http.post('..json', {
                    headers: {
                        username: username,
                        password: password
                    }
                })
                .success(function (data, status, headers, config) {
                    $timeout(function () {
                        callback(status);
                    }, 1000);
                });
        };
        return service;
}])

controller.js:

 'use strict';
angular.module('Authentication').controller('LoginController', ['$scope', '$rootScope', '$location', 'AuthenticationService', '$http', '$timeout', '$window',
function ($scope, $rootScope, $location, AuthenticationService, $http, $timeout, $window) {
**$scope.name=true;**  
        $scope.login = function () {
            AuthenticationService.Login($scope.username, $scope.password, function (response) {
                if (response === 'Success') {
                    $http.get('..json').success(data,status,headers,config){
                   **$scope.value=true;**
                  })
                } else {
                    alert("Error");
                }
            });
        };
}]);

HTML:

我有两个复选框与控制器中的两个$scope变量链接——$scope.name和$scope.value

  <input type="checkbox" ng-checked="name"> abc
  <input type="checkbox" ng-checked="value">xyz

现在,由于两个$scope变量都设置为true,因此最初应该选中两个复选框。。。。但是选中了带有$scope.name的复选框,而未选中$scope.value的

关于为什么会发生这种情况,以及如何使第二个复选框也基于$scope.value 进行初始检查的任何想法

这是一个与您的原始代码几乎完全相同的工作版本,我看到的唯一错误可能是if (response === 'Success'),因为在我的示例代码中,.success(data,status,headers,config)中的status是一个数字,而不是像"Success"这样的字符串,也请查看此处的官方文档。