相关疑难解决方法(0)

AngularJS:使用异步数据初始化服务

我有一个AngularJS服务,我想用一些异步数据进行初始化.像这样的东西:

myModule.service('MyService', function($http) {
    var myData = null;

    $http.get('data.json').success(function (data) {
        myData = data;
    });

    return {
        setData: function (data) {
            myData = data;
        },
        doStuff: function () {
            return myData.getSomeData();
        }
    };
});
Run Code Online (Sandbox Code Playgroud)

显然这不会起作用,因为如果某些东西doStuff()myData返回之前尝试调用,我将得到一个空指针异常.据我所知,从这里这里提出的其他一些问题,我有几个选择,但没有一个看起来很干净(也许我错过了一些东西):

使用"运行"设置服务

设置我的应用时,请执行以下操作:

myApp.run(function ($http, MyService) {
    $http.get('data.json').success(function (data) {
        MyService.setData(data);
    });
});
Run Code Online (Sandbox Code Playgroud)

然后我的服务看起来像这样:

myModule.service('MyService', function() {
    var myData = null;
    return {
        setData: function (data) {
            myData = data;
        },
        doStuff: function () {
            return myData.getSomeData();
        } …
Run Code Online (Sandbox Code Playgroud)

javascript service asynchronous angularjs angular-promise

472
推荐指数
7
解决办法
21万
查看次数

延迟AngularJS路由更改,直到加载模型以防止闪烁

我想知道是否有一种方法(类似于Gmail)AngularJS 延迟显示新路由,直到每个模型及其数据已使用其各自的服务获取.

例如,如果ProjectsController列出了所有项目以及project_index.html显示这些项目的模板,Project.query()则会在显示新页面之前完全获取.

在此之前,旧页面仍将继续显示(例如,如果我正在浏览另一个页面,然后决定查看此项目索引).

javascript angularjs angularjs-routing

319
推荐指数
9
解决办法
15万
查看次数