我有一个控制器和一个部分文件。部分文件尝试访问由控制器设置的变量。但是这里的问题是控制器通过进行http调用来填充变量的范围对象,并且由于这个ajax请求,当http调用返回数据时,部分文件已经被加载,因此我将变量作为未定义。此外,虽然在浏览器上加载了部分文件,但是在http响应返回后,范围值被绑定后,数据会在延迟后填充。
AngularJs中是否有一种方法,只有在控制器中的http调用获取数据后才加载部分文件/指令,以便视图立即加载数据,而不是在延迟之后加载。请让我知道如何解决这个问题。
答案 0 :(得分:1)
如果您正在讨论ng-view
中加载的部分内容,您可以使用路线上的$routeProvider
resolve
属性。此属性可以采用返回值或promise的函数。在承诺的情况下,只有在解决了承诺后才会加载视图。您的代码看起来像
$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