Angularjs 控制器';未初始化s$范围

Angularjs 控制器';未初始化s$范围,angularjs,Angularjs,据我所知,$stateProvider的resolve属性用于初始化其控制器的属性 //Config .state('init', { url: '/', templateUrl: 'views/Init.html', controller: 'InitController', resolve: { InitData: function(initService, tabService) { var data = initSe

据我所知,$stateProvider的resolve属性用于初始化其控制器的属性

//Config
.state('init', {
    url: '/',
    templateUrl: 'views/Init.html',
    controller: 'InitController',
    resolve: {
        InitData: function(initService, tabService) {
            var data = initService.mapData();

            tabService.field1.IsABC = data.field1.IsABC; //returns the value true (Boolean)

            return true;
        }
    };


//Controller (InitController)
app.controller('InitController', ['$scope', 'tabService', function($scope, $tabService) {
    $scope.IsABC = $tabService.field1.IsABC;
}]);

在上面的示例中,如果为tabService.field1.IsABC分配了一个值true,则不应为$scope。InitController下的IsABC是否获得相同的值

解析中的返回值将出现在控制器的“InitData”下。在控制器中注入“InitData”以获得“true”。。。还要检查您的服务名称。这是“tabService”,不是吗?

您没有正确设置服务中“field1”的值

angular.module('demoApp', ['ui.router'])
    .factory('myDataFactory', function ($http) {
    var field1 = {"IsABC":false};  //default false;
    return {

        set: function (value) {
             field1.IsABC = value;
            return x;
        },
        get: function () {

            return field1;
        }

    };
})
在resolve中设置:

 resolve: {
                    backendData: function (myDataFactory, $stateParams) {
                        return myDataFactory.set(true);
                    }
                }
进入控制器:

.controller('homeController', function ($scope,myDataFactory) {

    $scope.hello = myDataFactory.get();
    console.log( $scope.hello);
});

请显示您在tabservice上的代码。在tabservice中,field1是如何初始化的:var field1={};是的,我理解,但我需要的值是tabService.field1中的值,在分配data.field1的值后,该值应为true。是的,服务的名称是tabService。