更新有关load方法+ http.get奇怪行为的视图

时间:2016-08-01 15:32:56

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

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

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

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的新手,如果需要,我可以提供更多精确度。

1 个答案:

答案 0 :(得分:0)

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

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

app.controller('MyCtrl', function ($scope, ...) {
    [...]

    $scope.update = function() {              
        ...
        });
    };

    [...]

    $scope.update();
});

这样,每次显示相应的视图时,都会调用该函数一次以更新它(更改选项卡时和刷新页面时)。

- 2 对于这部分,我实际上还不知道问题的真正来源。我使用了Gatsbill在这里推荐我的方法(在帖子的编辑部分):Gatsbill answer 清理/重组我的项目。使用处理$http请求的服务,它工作正常。