AngularJS ui-路由器无法解析服务调用
AngularJS ui-router not resolve service call
我正尝试在我的 ui-路由器状态提供程序中使用解析功能。
我配置如下:
app.config(['$stateProvider', '$urlRouterProvider', '$locationProvider', function ($stateProvider, $urlRouterProvider, $locationProvider) {
...
$stateProvider.state('expositions', {
url: '/Expositions',
views: {
"container": {
templateUrl: '/views/expositions.html',
resolve: {
expositions: function ($http) {
return $http.get('/api/site/expositions').then(
function (response) {
console.log("DATA", response.data);
return response.data;
},
function (error) {
console.log("ERROR", error);
})
}
}
}
}
})
...
}
在这种情况下,当我点击说明时 link 没有调用解析并且没有执行导航:没有任何反应。
我还尝试使用工厂(资源服务)对其进行配置,如下所示:
app.config(['$stateProvider', '$urlRouterProvider', '$locationProvider', function ($stateProvider, $urlRouterProvider, $locationProvider) {
...
$stateProvider.state('expositions', {
url: '/Expositions',
views: {
"container": {
templateUrl: '/views/expositions.html',
resolve: {
expositions: function (Resources) {
console.log("DATA", Resources);
return Resources.expositions();
}
}
}
}
})
...
}
资源服务在单独的文件中定义如下:
resourcesService.js
(function () {
'use strict';
angular
.module('site')
.factory('Resources', ['$resource',
function ($resource) {
return $resource('/api/site/:action/:id', {}, {
...
expositions: {
method: 'GET',
params: { action: "expositions" },
isArray: true
//transformResponse: function (data) {
// return angular.fromJson(data).list
//}
},
...
});
}
]);
})();
同样在这种情况下,什么也没有发生,也没有调用 resolve 函数。
我错过了什么?
提前致谢!
试试这个
expositions: ['$http',function ($http) {
像这样
resolve: {
expositions: ['$http',function ($http) {
return $http.get('/api/site/expositions').then(
function (response) {
console.log("DATA", response.data);
return response.data;
}],
function (error) {
console.log("ERROR", error);
})
}
让我知道这是否有效
我正尝试在我的 ui-路由器状态提供程序中使用解析功能。 我配置如下:
app.config(['$stateProvider', '$urlRouterProvider', '$locationProvider', function ($stateProvider, $urlRouterProvider, $locationProvider) {
...
$stateProvider.state('expositions', {
url: '/Expositions',
views: {
"container": {
templateUrl: '/views/expositions.html',
resolve: {
expositions: function ($http) {
return $http.get('/api/site/expositions').then(
function (response) {
console.log("DATA", response.data);
return response.data;
},
function (error) {
console.log("ERROR", error);
})
}
}
}
}
})
...
}
在这种情况下,当我点击说明时 link 没有调用解析并且没有执行导航:没有任何反应。
我还尝试使用工厂(资源服务)对其进行配置,如下所示:
app.config(['$stateProvider', '$urlRouterProvider', '$locationProvider', function ($stateProvider, $urlRouterProvider, $locationProvider) {
...
$stateProvider.state('expositions', {
url: '/Expositions',
views: {
"container": {
templateUrl: '/views/expositions.html',
resolve: {
expositions: function (Resources) {
console.log("DATA", Resources);
return Resources.expositions();
}
}
}
}
})
...
}
资源服务在单独的文件中定义如下:
resourcesService.js
(function () {
'use strict';
angular
.module('site')
.factory('Resources', ['$resource',
function ($resource) {
return $resource('/api/site/:action/:id', {}, {
...
expositions: {
method: 'GET',
params: { action: "expositions" },
isArray: true
//transformResponse: function (data) {
// return angular.fromJson(data).list
//}
},
...
});
}
]);
})();
同样在这种情况下,什么也没有发生,也没有调用 resolve 函数。
我错过了什么?
提前致谢!
试试这个
expositions: ['$http',function ($http) {
像这样
resolve: {
expositions: ['$http',function ($http) {
return $http.get('/api/site/expositions').then(
function (response) {
console.log("DATA", response.data);
return response.data;
}],
function (error) {
console.log("ERROR", error);
})
}
让我知道这是否有效