AngularJS:检索电子中的 mysql 数据并将其发布到 AngularJS 范围

AngularJS: Retrieve mysql data in electron and publish it to AngularJS scope

我正在尝试使用 electronmysql 数据库中检索数据列表,并将其绑定到控制器范围内的列表。我正在使用 mysql2。这是我的控制器:

$scope.carList = [];
mysql.execute("SELECT * FROM cars").spread(function(results){
    $scope.carList = results;
    console.log(results);
})

我确实得到了结果,但是视图 carList 中的 仍然是空的。我该如何解决这个问题?


我刚刚在我的视图中添加了一个按钮并将其绑定到一个检查函数,如下所示:

$scope.check = function(){
    console.log($scope.carList);
}

单击按钮后,我在视图中的列表得到填充。现在我的问题是如何在控制器开始时填充我的列表,而不是等待事件发生?

我认为 mysql.execute("").spread(fn) promise 不是 AngularJS 摘要循环的一部分。您没有提供足够的代码来完全重现您的问题,但我认为通过触发一个新的摘要周期它应该适合您。例如。尝试使用 $timeout 触发新的摘要循环。

$scope.carList = [];

mysql.execute("SELECT * FROM cars").spread(function(results){
     $timeout(function () {
        $scope.carList = results;
     });
})

我更愿意创建一个 AngularJS 服务来以一种很好的方式处理你的电子 mysql。在完成不属于摘要周期的 mysql 程序后,您可以在其中全局应用 $scopes


使用AngularJS promises

的方法
var myApp = angular.module('myApp', []);

myApp.controller('MyCtrl', function($scope, $q) {


  $scope.carList = [];

  getCars.then(function(cars) {
    $scope.carList = cars;
  });


  function getCars() {

    var deferred = $q.defer();

    mysql.execute("SELECT * FROM cars").spread(function(results) {
      deferred.resolve(results);
    });

    return deferred.promise;
  }

});