加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – ui-route解决不起作用

发布时间:2020-12-17 17:16:03 所属栏目:安全 来源:网络整理
导读:我的应用程序需要一些基本数据才能启动.这就是我创建服务的原因,我将它用作该公共数据的模型,以便所有控制器都可以访问它.我正在尝试使用ui-route的reslove功能解决该服务,该功能说如果我返回一个promise,那么它将在控制器执行开始之前得到解决,但它对我不起
我的应用程序需要一些基本数据才能启动.这就是我创建服务的原因,我将它用作该公共数据的模型,以便所有控制器都可以访问它.我正在尝试使用ui-route的reslove功能解决该服务,该功能说如果我返回一个promise,那么它将在控制器执行开始之前得到解决,但它对我不起作用.这是我的代码

服务:

var Data = function ($q,$http) {
var list = {};
var cachedData;
var resolveData;

resolveData = function () {
    return $http.get('/api/data')
        .then(function (response) {
            var deferred = $q.defer();

            deferred.resolve(list.setData(response.data));

            return deferred.promise;
        },function (response) {
        });
};

list.getData = function () {
    if (cachedData) {
        return cachedData;
    }
    else {
        resolveData();
    }
};

list.setData = function (data) {

    cachedData = data;

    return data;
};
return list;
};

Data.$inject = ['$q','$http'];

路线:

.state('temp',{
        url: 'temp',templateUrl: '/temp',controller: 'temp',resolve: {
            data: function (data) {
                return data.getData();
            }
        }
    })

控制器:

var temp = function(data,$scope){
    console.log('asad');
    $scope.showLoading = true;

    $scope.prefixes = data.something; //not working

    $scope.lists = data;
};

temp.$inject = ['data','$scope'];

解决方法

首先,使用plunker更容易.

但似乎函数getData没有返回任何承诺.

我会将getData()改为:

list.getData = function () {
var deferred = $q.defer();
if (cachedData) {
    deferred.resolve(cachedData);
} else {
    resolveData().then(deferred.resolve).catch(deferred.reject);
}

return deferred.promise;
};

顺便说一句,我还将resolveData()更改为:

resolveData = function () {
    var deferred = $q.defer();

    $http.get('/api/data')
        .then(function (response) {
            list.setData(response.data);
            deferred.resolve(response.data);
        });

    return deferred.promise;
};

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读