在 AngularJs 中从数据库中获取和显示数据

Posted

技术标签:

【中文标题】在 AngularJs 中从数据库中获取和显示数据【英文标题】:Fetch and display data from database in AngularJs 【发布时间】:2015-02-25 12:53:24 【问题描述】:

如何在屏幕上弹出我的客户列表,该列表来自我的数据库,我有 11 行客户,我想创建一个列表视图并显示它们,这是我的代码:

dbFactory.method = function findAll() 
    db.transaction(
        function(tx) 
            var sql = "SELECT (nome) as nomes FROM clientes";
            log(sql);
            tx.executeSql(sql, [],
                function(tx, results) 
                    var len = results.rows.length,
                        clientes = [],
                        i = 0;
                    for (; i < len; i = i + 1) 
                        clientes[i] = results.rows.item(i).nomes;
                    
                    log(clientes + '  found');


                
            );
        ,txErrorHandler,
        function () 

        
    );

;

控制器:

 .controller('ListaCtrl', function ($scope, dbFactory) 


         $scope.items = dbFactory.method();
         console.log(dbFactory.method());


    );

clientes.html

<ion-view view-title="Playlists" ng-app="starter">
  <ion-content>
    <ion-list>
  <ion-item ng-repeat="itens in items" >

      <p>itens.nome</p>

  </ion-item>
    </ion-list>
  </ion-content>
</ion-view>

日志:

 Promise $$state: Object, then: function, catch: function, finally: function
$$state: Object
status: 1
value: SQLResultSet
insertId: [Exception: DOMException: Failed to read the 'insertId' property from 'SQLResultSet': The query didn't result in any rows being added.]
rows: SQLResultSetRowList
length: 11
__proto__: SQLResultSetRowList
rowsAffected: 0

【问题讨论】:

【参考方案1】:

我已经设法使用 deferred 和 promise 解决了这个问题,这就是我所做的:

var getMessages = function findAll() 
            db.transaction(
                function(tx) 
                    var sql = "SELECT (nome) as nomes FROM clientes";
                    tx.executeSql(sql, [],
                        function(tx, results) 
                            var len = results.rows.length,
                                clientes = [],
                                i = 0;
                            for (; i < len; i = i + 1) 
                                clientes[i] = results.rows.item(i).nomes;
                            
                            log(clientes + ' rowsss found');
                            deferred.resolve(clientes);

                        
                    );
                ,txErrorHandler,
                function ()  
            );
            return deferred.promise;

        ;

        return 
            showClientes: getMessages
        ;

控制器:

.controller('ListaCtrl', function ($scope, dbFactory) 

        dbFactory.showClientes().then(function(listview) 
            $scope.clientes = listview;
            console.log($scope.clientes);
        );

    );

还有html:

<ion-view view-title="Playlists" ng-app="starter">
  <ion-content>
    <ion-list>
      <ion-item ng-repeat="cliente in clientes">

          cliente

      </ion-item>
    </ion-list>

  </ion-content>
</ion-view>

现在我可以看到我的所有客户的列表视图。

【讨论】:

【参考方案2】:
 .controller('ListaCtrl', function ($scope, dbFactory) 


        dbFactory.method().$promise.then(
                 function(res)
                       $scope.items = res; //or res.data
                 ,
                 function()
                      //error call back
                 
         );

    );

【讨论】:

在 html 中使用 ng-repeat 感谢您的帮助,我是这样做的:&lt;ion-item ng-repeat="itens in items " &gt; &lt;p&gt;itens&lt;/p&gt; &lt;/ion-item&gt; 但我什么也没显示 我的控制器设置在路由中 我理解你的问题......那是返回一个承诺......你必须在控制器内解决这个承诺...... 我在回答中发帖

以上是关于在 AngularJs 中从数据库中获取和显示数据的主要内容,如果未能解决你的问题,请参考以下文章

如何在反应应用程序中从数据库中获取和显示图像

在我的 laravel 4 和 angularjs 应用程序中从一条路线重定向到另一条路线

如何在 AngularJS 中从 $http.get 返回图像

在 Laravel 6 中从外键获取数据

获取数据但无法使用Angularjs spring在html中显示数据

如何在flutter中从云Firestore中获取数据?