angular.js + node.js / electron中的Promise不起作用

时间:2015-11-02 19:55:31

标签: javascript angularjs node.js electron

我在电子中使用angular.js和node-orm来与数据库通信。 Node-orm查找/获取函数是异步的,所以我尝试使用Promises来获取服务中的数据,如下所示:

app.service('SearchService', function($q) {
  this.title = function(token) {
    var deferred = $q.defer();
    Unit.find({}).where("unit_title LIKE ?", ['%'+token.toUpperCase()+'%']).run(function(err, results) {
      if (err) {
        return console.error('error running title query', err);}
      deferred.resolve(results);
    });
    return deferred.promise;
  }
});
app.controller("GreetController", function($scope, SearchService) {
  $scope.units = SearchService.title('test');
});

目标是角度翻译视图中的承诺。:

<div ng-controller="GreetController">
<ul>
    <li ng-repeat="unit in units">{{unit.title}}</li>
</ul>
</div>

然而它不起作用。我知道Promises已解决,因为我可以将它们登录到控制台并使用Chromium的开发工具查看值。

1 个答案:

答案 0 :(得分:1)

Promise仍然是异步操作,因此title方法返回一个promise对象,而不是实际的results。您需要使用promise then-able API来提供将在数据可用时调用的回调:

app.controller("GreetController", function($scope, SearchService) {
  SearchService.title('test').then(function(data) {
      $scope.units = data;
  });
});