我有一个具有不同视图的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的新手,如果需要,我可以提供更多精确度。
答案 0 :(得分:0)
我的问题已经解决了。以下是我找到的解决方案:
1 - 我个人更喜欢在控制器中调用update()
函数,如下所示:
app.controller('MyCtrl', function ($scope, ...) {
[...]
$scope.update = function() {
...
});
};
[...]
$scope.update();
});
这样,每次显示相应的视图时,都会调用该函数一次以更新它(更改选项卡时和刷新页面时)。
- 2 对于这部分,我实际上还不知道问题的真正来源。我使用了Gatsbill在这里推荐我的方法(在帖子的编辑部分):Gatsbill answer
清理/重组我的项目。使用处理$http
请求的服务,它工作正常。