javascript - 如何确保 $scope.property 在使用之前具有值(value)

标签 javascript angularjs ajax asynchronous

我有一个带有两个 $scope 属性的 Angular Controller :

 $scope.details = ortabilityService.detail();

 $scope.treeViewOptions = {           
            dataSource: new kendo.data.HierarchicalDataSource({
                data: $scope.details               
        };

正如我们所看到的, TreeView 选项取决于在将其用作数据源之前要解决的详细信息。现在的问题是,它是一个异步调用,并且始终不能保证它在 treeviewOptions 内部使用之前得到解决。因此,它是一个非常不可靠的负载,有时会加载,有时不会加载。如何确保 $scope.details 在在 treeViewOptions 中使用之前具有值(value)?

最佳答案

如果detail()返回一个promise,你可以这样做:

ortabilityService.detail().then(function(result) {
  $scope.details = result;

  $scope.treeViewOptions = {           
    dataSource: new kendo.data.HierarchicalDataSource({
      data: $scope.details               
    })
  };
});

编辑

正如评论所指出的,ortabilityService.detail().$promise.then 在这种情况下有效。

关于javascript - 如何确保 $scope.property 在使用之前具有值(value),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40686520/

相关文章:

c# - 为什么 .NET 将 UTC 日期更改为服务器时区?

javascript - Ajax 请求的 URL 中包含奇怪的数据

javascript - Rails - 使用 javascript 创建的远程链接

php - 如何在 Web 应用程序上实现 RESTful 服务?

javascript - ASP.NET MVC 捆绑子文件夹结构

java - JSP 中的多个按钮

javascript - 在发送请求之前将 View 中的值绑定(bind)到模型

javascript - 返回 promise 方式的差异

javascript - 如何使用 jquery 或 javascript 检查页面是否正在重新加载或刷新?

javascript - jQuery 时间选择器