【问题标题】:Updating views on load method + http.get strange behaviour更新加载方法的视图 + http.get 奇怪的行为
【发布时间】:2016-08-04 16:31:28
【问题描述】:

我有一个具有不同视图的 AngularJS 应用程序。其中一个视图用于控制具有三种不同状态的工具:启动、停止、使用相应按钮暂停。

该工具在服务器上运行,我想在每次返回时使用来自服务器的数据更新视图状态。示例:我启动工具,然后转到另一个视图,当我返回工具视图时,我使用 $http.get 调用服务以获取我的工具的状态。这会返回一个字符串“started”,我用它来更新视图的元素。

1 - 在我的 Tool.html 中使用 ng-init="update()" 是否更好地在每次重新加载时进行更新,例如:

<div ng-init=update()> [all my content] </div>

或在我的工具控制器中调用 update() ?或者也许你可以建议我另一种方法。

2 - 我尝试了这两种先例方法,但在每种情况下,我都有一个问题,有时 http.get 不起作用并且元素不起作用正确实现。我是这样用的:

$http.get('linkToGetTheState')
          .then(function(response) {
              $scope.toolStatus = response.data;
          })
switch($scope.toolStatus)
...

有时有效,有时无效(当我逐步运行时,它会跳过从 http.get 开始到切换结束和 toolStatus 保持未定义),甚至更奇怪的是,如果我调用该函数两次,效果会更好......如果有人对这里发生的事情和/或为什么有任何线索,我将非常感激。

我希望我的问题很清楚,我是 Angular/StackOverflow 的新手,如果需要我可以提供更多的精度。

【问题讨论】:

    标签: javascript html angularjs http-get auto-update


    【解决方案1】:

    我的问题解决了。以下是我找到的解决方案:

    1 - 我个人更喜欢在我的控制器中调用update() 函数,如下所示:

    app.controller('MyCtrl', function ($scope, ...) {
        [...]
    
        $scope.update = function() {              
            ...
            });
        };
    
        [...]
    
        $scope.update();
    });
    

    这样,每次显示对应的视图时,都会调用一次函数来更新它(当改变标签和刷新页面时)。

    - 2 对于这部分,我其实还是不知道问题到底出在哪里。我使用了 Gatsbill 在这里建议我的方法(在他帖子的 Edit 部分):Gatsbill answer 清理/重组我的项目。并且通过处理$http 请求的服务,它运行良好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-10
      • 1970-01-01
      相关资源
      最近更新 更多