Javascript 如何将在ngTable上设置属性转化为承诺?

Javascript 如何将在ngTable上设置属性转化为承诺?,javascript,angularjs,ngtable,Javascript,Angularjs,Ngtable,我正试图“承诺”以下电话: $scope.productsTable.params.page(page); 我的目标是手动跳转到某个页面,然后在加载页面后在该页面上执行一些操作 问题是page()方法没有返回承诺,因此我必须手动创建一个。我只是不知道该怎么做 有人提到我可以使用$q.when(params.page(n)),但这不起作用。。。也许我用错了 以下是page()方法: 然后触发$watch(调用使用ajax的reload()) 我想尝试创建自己的自定义page()方法,该方法不触

我正试图“承诺”以下电话:

$scope.productsTable.params.page(page);
我的目标是手动跳转到某个页面,然后在加载页面后在该页面上执行一些操作

问题是
page()
方法没有返回承诺,因此我必须手动创建一个。我只是不知道该怎么做

有人提到我可以使用
$q.when(params.page(n))
,但这不起作用。。。也许我用错了

以下是
page()
方法:

然后触发
$watch
(调用使用ajax的
reload()

我想尝试创建自己的自定义
page()
方法,该方法不触发手表,并手动调用reload(或getData)。我不知道该怎么做

这是我真正的桌子

$scope.productsTable.params = new ngTableParams({
  page:  1,
  count: 200
}, {
  counts: [20, 50, 200, 500, 1000, 2000],
  filterDelay: 0,
  total: 0,
  getData: function($defer, params) {
    Model.apiFullResponse.('ajax endpoint stuff')
    .then(function(response) {
      $scope.products = response.data;
      // stuff
      $defer.resolve($scope.products);
    });
  }
});
我的理想解决方案是以这样的方式结束

$scope.productsTable.params.page(page).then(function() {
  // do stuff
});
试一试


在您的情况下,page方法不返回源代码中的任何承诺,只返回params对象或工厂。通过使用promise.all,可以将多个承诺组合为一个承诺,在解析所有输入承诺时解析该承诺。如果没有承诺,表示您不需要等待承诺,如果存在,您应该等待解决

请解释此代码如何回答问题。简单地说“Try”再加上代码并不能帮助将来回答问题的人理解答案是如何工作的。好吧,对不起,我看到你是angular的专家用户。在您的情况下,page方法不返回源代码中的任何承诺,只返回params对象或工厂。通过使用promise.all,可以将多个承诺组合为一个承诺,在解析所有输入承诺时解析该承诺。如果没有承诺,意味着你不需要等待承诺,如果存在,你应该等待解决。堆栈溢出不是一个经典的论坛。它是一个高质量问题和答案的存储库,因此人们不应该根据“提问者”的话(顺便说一句,我不是最初的海报)来假设一个专业水平。因此,解释对于保持高质量至关重要,不仅对于OP,而且对于每个从搜索引擎、博客等获取信息的人都是如此。。因此,请将解释编辑到您的答案中,因为评论可能会在没有警告的情况下被删除。
 var promise = $q.when($scope.productsTable.params.page(page))
  if(promise.then)
     promise.all(function(){//do staff})
  else
   //do staff without promise