更新加载方法的视图 + http.get 奇怪的行为

Updating views on load method + http.get strange behaviour

我有一个 AngularJS 有不同观点的申请。其中一个视图用于控制具有三种不同状态的工具:启动、停止、暂停以及相应的按钮。

工具 运行 在服务器上,我想在每次返回时使用来自服务器的数据更新我的视图状态。示例:我启动该工具,然后转到另一个视图,当我返回工具视图时,我使用 $http.get 调用服务来获取我的状态工具。这个 returns 我是一个字符串 "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 保持未定义),甚至更奇怪,如果我调用该函数两次它会更好......如果有人对这里发生的事情有任何线索 and/or为什么,我会很感激。

我希望我的问题很清楚,我是 Angular/Whosebug 的新手,如果需要,我可以提供更精确的信息。

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

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

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

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

    [...]

    $scope.update();
});

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

- 2 对于这部分,我其实还是不知道问题到底出在哪里。我使用了 Gatsbill 在这里建议我的方法(在他的 post 的 Edit 部分): clean/reorganize 我的项目。通过处理 $http 请求的服务,它工作正常。