gpt4 book ai didi

AngularJS:在 Electron 中检索 mysql 数据并将其发布到 AngularJS 范围

转载 作者:太空宇宙 更新时间:2023-11-04 00:12:00 27 4
gpt4 key购买 nike

我正在尝试使用 electronmysql 数据库检索数据列表并将其绑定(bind)到 Controller 范围内的列表。我正在使用 mysql2。这是我的 Controller :

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

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

<小时/>

我刚刚在 View 中添加了一个按钮并将其绑定(bind)到一个检查函数,如下所示:

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

单击按钮后, View 中的列表将被填充。现在我的问题是如何在 Controller 的开头填充我的列表而不是等待事件发生?

最佳答案

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

$scope.carList = [];

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

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

<小时/>

使用 AngularJS Promise 的方法

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;
}

});

关于AngularJS:在 Electron 中检索 mysql 数据并将其发布到 AngularJS 范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49049832/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com