【问题标题】:"loading" or "wait" message before my JSON data loads in AngularJS在 AngularJS 中加载 JSON 数据之前的“加载”或“等待”消息
【发布时间】:2016-06-02 14:54:07
【问题描述】:

我已经看到了一些关于如何在使用 $http get() 请求从 URL 或单独文件加载 JSON 数据之前放置等待消息的解决方案,但我还没有看到在 HTML 中使用 smarty 格式的 JSON文件本身。在这种情况下,{$data} 是我的 JSON 数组,看起来像这样 {"title":"A2378","sub_name":"A2333", .....}。在我的 json 加载到我的 html 文件之前如何放置等待消息的任何简单方法?

<script type="text/javascript">
var app= angular.module('mysearch', []);
app.controller('mysearchController', ['$scope', function($scope){
        $scope.products = {$data}; 
]);
</script>

<div ng-app="mysearch">
   <div ng-controller="mysearchController">
      <div ng-repeat="item in products">
           {{item.sub_name}}
      </div>
      <p> {{item.title}}</p>
   </div>
</div>

提前致谢!

【问题讨论】:

    标签: javascript angularjs json smarty loading


    【解决方案1】:

    只需在您的作用域中设置一个标志以指示您是否已加载数据:

    <div ng-app="mysearch">
       <div ng-controller="mysearchController">
          <div ng-if="!loaded">Loading...</div>
          <div ng-if="loaded">
            <div ng-repeat="item in products">
               {{item.sub_name}}
               <p> {{item.title}}</p>
            </div>
          </div>
       </div>
    </div>
    

    然后,您的控制器可以在您完成数据加载后将该标志设置为 true。例如:

    app.controller('mysearchController', ['$scope', function($scope){
        $scope.loaded = false;
        $http.get('...').then(function(response) {
             $scope.products = response.data;
             $scope.loaded = true;
        });
    ]);
    

    显然,如果您通过其他机制加载数据,您的代码看起来不会完全像这样,但想法是一样的,只需在数据完全加载时切换一个标志。

    【讨论】:

    • 感谢您的评论。我喜欢这个想法并且已经看到了,但是我的 JSON 数据在 {$data} 中,它是一个数组,所以可以使用 $http.get( {$data} ).then(function(response)... ..? 我以为我只能在 $http.get('....') 中使用 url 或 'content.json' 作为文件。
    • 我只是将我的 JSON 放在一个单独的文件中,并使用 URL 来获取数据。此解决方案有效。感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 2016-03-11
    • 1970-01-01
    • 2021-06-25
    • 2019-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多