0

我不明白为什么 Restangular 在 jquery-ui 回调中的行为与它在其他任何地方的行为不同。你能?

以下适用于我的控制器:

Restangular.all('skills').getList().then(function(result) {
  console.log(result);
});

但是,当我在 jquery-ui-select2(通过 angular-select2)的查询函数中使用 Restangular 时,它永远不会发出请求。

HTML:

<input type="text" ui-select2="skillOptions" ng-model="skills">

JavaScript:

$scope.skillOptions = {
  multiple: true,
  query: function(query) {
    // I see this:
    console.log("Q:", query.term);
    // this silently fails:
    Restangular.all('skills').getList({
      query: query.term
    }).then(function(body) {
      // this callback is never reached (nor is the error one)
      var skills = body.skills;
      console.log("got skills", skills);
      query.callback({
        data: {
          text: 'name',
          results: skills
        }
      });
    }, function(error) {
      console.error("Error getting skills", error);
    });
  }
};

是否有另一种方法可以将查询回调与 Restangular 一起使用,或者任何人都可以看到为什么这在地球上不起作用?

4

1 回答 1

0

解决方案是根据文档的这一位将回调嵌套在一个$scope.$apply(因为我在 AngularJS 版本 1.1.5 上)

这是一些工作代码:

$scope.skillOptions = {
  multiple: true,
  query: function(query) {
    $scope.$apply(function() {
      Restangular.all('skills').getList({
        query: query.term
      }).then(function(body) {
        var skills;
        skills = body.skills;
        console.log("got skills", skills);
        return query.callback({
          results: _(skills).map(function(s) {
            return {
              text: s.name,
              id: s.id
            };
          })
        });
      }, function(error) {
        console.log("Error getting skills", error);
      });
    });
  }
};
于 2013-10-05T10:31:22.160 回答