在我的angular.js页面中,我使用我需要的所有属性扩展$ scope。 之前,我只是用
扩展了$ scopeangular.extend($scope,{
myAttr : aService.getValues()
});
然而,结果我必须向aService.getValues
添加一个promise(角度文件访问)。因此,我不能保持上面的语法,但必须用
angular.extend($scope,{
myAttr : null
});
aService.getValues().then(function(values){$scope.myAttr = values;})
这很烦人,因为我必须更换相当多的代码,并且害怕添加错误。任何替代方案?
答案 0 :(得分:1)
我唯一可以建议的是对自己的解决方案稍微更漂亮一点:
aService.getValues().then(function(values) {
angular.extend($scope, {
myAttr: values
})
});
$scope
同步扩展至关重要吗?如果是的话,我也没有看到任何其他方式将异步数据提供给它的方式。
修改强>
如果您正在重新修改逻辑,请考虑将$stateProvider
与resolve
属性一起使用:https://github.com/angular-ui/ui-router/wiki(向下滚动到讨论解决方案的部分)。简而言之,resolve
中的所有内容必须在状态控制器初始化之前运行。通过这种方式,您可以在解决方案中执行所有异步操作,并且只有在您拥有所需的所有内容后才能加载它。