据我所知,$ 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,那么InitController下的 $ scope.IsABC 是否应该获得相同的值?
答案 0 :(得分:0)
解析中的返回值将出现在“InitData”下的控制器中。在控制器中注入“InitData”以获得“true”...同时检查您的服务名称。这是“tabService”,不是吗?
答案 1 :(得分:0)
您尚未正确设置“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: {
backendData: function (myDataFactory, $stateParams) {
return myDataFactory.set(true);
}
}
进入控制器:
.controller('homeController', function ($scope,myDataFactory) {
$scope.hello = myDataFactory.get();
console.log( $scope.hello);
});