插入数据库后,Angularjs通过$ http.get服务刷新视图

他们老了

请帮忙!我正在为此扯头发。我为此尝试了很多教程,并且似乎无法远程操作任何东西。

用户可以在页面上添加/删除/更新用户信息,我希望每当他们执行其中一项操作时刷新它。所有操作都可以很好地写入数据库,并且在取回值方面取得了许多成功,但是我无法实时获取视图更新。

我不能使用$ scope。$ apply(); $ digest已经在处理中。我觉得我只缺少一些主键。

服务

angular.module('userlistFactory', [])
    .service('Data', function($http){
        this.list = function(){
            return $http.get('.../getUsers.php', {cache: true})  
            .then(function(data){
                return data.data;
            });
        }

控制器

userlistControllers.controller('UserListCtrl', ['$scope', 'Data', function ($scope, Data){

  Data.list().then(function (data) {   // Populates the page the first time through
    $scope.users = data;
  })

  $scope.$watch('Data.list()', function(newValue){  // At this point, I don't understand
    $scope.users = newValue;
  }, true);

看法

<tr ng-repeat-start="user in users| filter:query | orderBy:'id'">
    <td><a href="#/profile/{{user.id}}">{{user.id}}</a></td>
    <td>{{user.firstname}}</td>  // etc...

谢谢阅读。

吉姆·法伦(Jim Fallin)

当您返回$ http对象并在范围内设置回调时,除非您想处理.fail()或进行进一步处理,否则无需在服务中处理回调。甚至可能是导致错误的退货。

angular.module('userlistFactory', [])
.service('Data', function($http){
    this.list = function(){
        return $http.get('.../getUsers.php', {cache: true});
        }
    });

这样,您致电给用户的电话就可以了,但是只会运行一次。如果要在数据库更改后调用它进行更新,则需要将其放入方法中

    function UpdateUsers(){         
      Data.list().then(function (data) {
         $scope.users = data;
         $scope.$apply();  //Because it was asynch
      });
    }

您可以摆脱$ watch部分。

现在,当您的用户添加,删除等时,您只需调用update Users方法,就会启动同步请求。返回时,$ scope.users将被更新,$ scope。$ apply()将调用摘要循环来更新您的页面。

当然,您希望您的列表像在评论中一样立即更新。为此,只需在您的控制器中调用该方法即可。

    UpdateUsers();

$ http对象似乎有些混乱。您将返回对象并添加.then(....您正在注册回叫。大多数代码示例都一次显示了所有内容$ http(...)。then(...),但在您的情况下,您将在服务中创建它,然后返回该对象,然后在其中将您的回调注册到控制器上。$ http ---->返回到控制器add .then(..),因此您无需在两个实例中都进行处理您可以如何处理.fail(...。如果需要,也可以在任何需要的地方处理。

消除有关$ watch的困惑。Angular仅在绑定对象时才关心它们。如果我有一个未在任何地方使用的值,但我想在值更改时做些事情,则需要$ watch对其进行更改。那是因为没有事件或任何东西可以触发代码。当您将$ watch绑定到某物时,它会自动完成添加,因为它然后在摘要周期中对其进行$ watch监视,以便它可以更新需要更新的内容。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

插入数据库后,Angularjs通过$ http.get服务刷新视图

来自分类Dev

插入数据库Web服务后更新数据

来自分类Dev

数据库更新后,nodejs自动刷新视图

来自分类Dev

删除数据库条目后刷新列表视图

来自分类Dev

使用$ http.get从sql数据库检索数据

来自分类Dev

如何在Mongodb数据库的angular js中使用$ http服务通过名字获取用户

来自分类Dev

AngularJS视图不等待$ http.get

来自分类Dev

AngularJS视图不等待$ http.get

来自分类Dev

将站点上传到Web服务器后无法将数据插入数据库

来自分类Dev

使用NetBeans插入后如何自动刷新绑定到Mysql数据库的JTable

来自分类Dev

使用AngularJS的$ http服务通过GET请求发送数组

来自分类Dev

如何通过Web服务将数据排队以便批量插入数据库?

来自分类Dev

离子通过http请求从数据库中检索数据

来自分类Dev

数据库触发后刷新实体

来自分类Dev

Flot,angularjs并通过http get获取要绘制的数据

来自分类Dev

如何插入基于服务的数据库

来自分类Dev

为什么不重用AngularJS中的服务刷新视图

来自分类Dev

使用AngularJS服务和视图处理页面刷新

来自分类Dev

android:从数据库中删除后,列表视图中的数据刷新

来自分类Dev

android:从数据库中删除后,列表视图中的数据刷新

来自分类Dev

全局缓存服务器数据并刷新视图

来自分类Dev

OrientDB:通过HTTP-API创建图数据库

来自分类Dev

使用$ _GET变量插入数据库

来自分类Dev

从数据库中删除项目后如何刷新我的列表视图

来自分类Dev

从$ http Promise刷新返回的数据

来自分类Dev

通过php在mysql数据库中插入大量数据时出现服务器错误500

来自分类Dev

成功更新数据库后,Blazor服务器页面无法刷新

来自分类Dev

服务器数据库更改后自动刷新yii2网格

来自分类Dev

$ http.get()响应后,视图未更新

Related 相关文章

  1. 1

    插入数据库后,Angularjs通过$ http.get服务刷新视图

  2. 2

    插入数据库Web服务后更新数据

  3. 3

    数据库更新后,nodejs自动刷新视图

  4. 4

    删除数据库条目后刷新列表视图

  5. 5

    使用$ http.get从sql数据库检索数据

  6. 6

    如何在Mongodb数据库的angular js中使用$ http服务通过名字获取用户

  7. 7

    AngularJS视图不等待$ http.get

  8. 8

    AngularJS视图不等待$ http.get

  9. 9

    将站点上传到Web服务器后无法将数据插入数据库

  10. 10

    使用NetBeans插入后如何自动刷新绑定到Mysql数据库的JTable

  11. 11

    使用AngularJS的$ http服务通过GET请求发送数组

  12. 12

    如何通过Web服务将数据排队以便批量插入数据库?

  13. 13

    离子通过http请求从数据库中检索数据

  14. 14

    数据库触发后刷新实体

  15. 15

    Flot,angularjs并通过http get获取要绘制的数据

  16. 16

    如何插入基于服务的数据库

  17. 17

    为什么不重用AngularJS中的服务刷新视图

  18. 18

    使用AngularJS服务和视图处理页面刷新

  19. 19

    android:从数据库中删除后,列表视图中的数据刷新

  20. 20

    android:从数据库中删除后,列表视图中的数据刷新

  21. 21

    全局缓存服务器数据并刷新视图

  22. 22

    OrientDB:通过HTTP-API创建图数据库

  23. 23

    使用$ _GET变量插入数据库

  24. 24

    从数据库中删除项目后如何刷新我的列表视图

  25. 25

    从$ http Promise刷新返回的数据

  26. 26

    通过php在mysql数据库中插入大量数据时出现服务器错误500

  27. 27

    成功更新数据库后,Blazor服务器页面无法刷新

  28. 28

    服务器数据库更改后自动刷新yii2网格

  29. 29

    $ http.get()响应后,视图未更新

热门标签

归档