Angular-UI-路由器解析不工作
Angular-UI-router resolve not working
我遇到了这个问题,当我在 Angular-ui-router 中使用 resolve 导致我的站点每秒执行数百个获取请求但不加载视图时。我正在使用完整的 MEAN 堆栈。
视图是使用内联模板创建的,例如:
<script type="text/ng-template" id="/home.html">......</script>
然后在 <ui-view>
标签中使用。
请看这段代码:
app.factory('posts', ['$http', function($http) {
var o = {
posts: []
};
o.getAll = function() {
return $http.get('/posts').success(function(data){
angular.copy(data, o.posts);
});
};
return o;
}]);
app.config([
'$stateProvider',
'$urlRouterProvider',
function($stateProvider, $urlRouterProvider) {
$stateProvider
.state('home', {
url: '/home',
templateUrl: '/home.html',
controller: 'MainCtrl',
resolve : {
postPromise : ['posts',
function(posts) {
return posts.getAll();
}]
}
})
如果我不使用 Resolve,页面没问题,它会加载。
编辑:
我将其归结为我编写的代码是针对 angular 版本 <= 1.4 的,因此我需要使用 .then 而不是 .success,但是当我使用 .then 时,我没有得到工厂的持久数据应该做的。
那么新的问题,我应该继续 angularJs 1.4 还是 try/get 帮助将其转换为 1.6?感谢大家的回答,谢谢。
不是直接 returning $http
promise
对象,而是将 promise
对象放入变量中并 return 它。请像休闲一样,它对我有用。
var promise = $http.get('posts');
promise.then(function(response) {
},
function(data) {
});
return promise;
请注意 success
和 error
回调在 angular 1.6
中已弃用,请使用 then
.
我遇到了这个问题,当我在 Angular-ui-router 中使用 resolve 导致我的站点每秒执行数百个获取请求但不加载视图时。我正在使用完整的 MEAN 堆栈。
视图是使用内联模板创建的,例如:
<script type="text/ng-template" id="/home.html">......</script>
然后在 <ui-view>
标签中使用。
请看这段代码:
app.factory('posts', ['$http', function($http) {
var o = {
posts: []
};
o.getAll = function() {
return $http.get('/posts').success(function(data){
angular.copy(data, o.posts);
});
};
return o;
}]);
app.config([
'$stateProvider',
'$urlRouterProvider',
function($stateProvider, $urlRouterProvider) {
$stateProvider
.state('home', {
url: '/home',
templateUrl: '/home.html',
controller: 'MainCtrl',
resolve : {
postPromise : ['posts',
function(posts) {
return posts.getAll();
}]
}
})
如果我不使用 Resolve,页面没问题,它会加载。
编辑: 我将其归结为我编写的代码是针对 angular 版本 <= 1.4 的,因此我需要使用 .then 而不是 .success,但是当我使用 .then 时,我没有得到工厂的持久数据应该做的。
那么新的问题,我应该继续 angularJs 1.4 还是 try/get 帮助将其转换为 1.6?感谢大家的回答,谢谢。
不是直接 returning $http
promise
对象,而是将 promise
对象放入变量中并 return 它。请像休闲一样,它对我有用。
var promise = $http.get('posts');
promise.then(function(response) {
},
function(data) {
});
return promise;
请注意 success
和 error
回调在 angular 1.6
中已弃用,请使用 then
.