【问题标题】:Loading the partial files after the http call inside the controller在控制器内部的 http 调用之后加载部分文件
【发布时间】:2014-05-10 05:15:51
【问题描述】:

我有一个控制器和一个部分文件。部分文件尝试访问控制器设置的变量。但是这里的问题是控制器通过进行http调用来填充范围对象,并且由于这个ajax请求,当http调用返回数据时,部分文件已经加载,因此我得到的变量为不明确的。此外,虽然部分文件已加载到浏览器上,但数据会在延迟后填充,因为范围值在 http 响应返回后被绑定。

AngularJs 中是否有一种方法,仅在控制器中的 http 调用获取数据后加载部分文件/指令,以便视图立即加载数据,而不是经过一些延迟。请让我知道如何解决这个问题。

【问题讨论】:

  • 部分文件是什么意思,是不是部分视图,包含在ng-include中?
  • 它是一个包含指令的局部视图并被包含在mg-view

标签: angularjs angularjs-directive angularjs-scope angularjs-routing


【解决方案1】:

如果您谈论的是在 ng-view 中加载的部分,您可以在路由上使用 $routeProvider resolve 属性。此属性可以采用返回值或承诺的函数。在承诺的情况下,只有在承诺解决后才会加载视图。你的代码看起来像

 $routeProvider.when('/', {
            templateUrl: 'app.html', 
            controller:myAppController, 
            resolve:{
                data:function($http){
                    return $http.get('url');   //this by default returns promise.
                }
            }
        });

现在您还可以在控制器中注入 resolve 的 data 属性作为参数并访问数据。

也可以观看此视频以了解解决http://www.thinkster.io/angularjs/6cmY50Dsyf/angularjs-resolve-conventions

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-13
    • 1970-01-01
    • 2012-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多