如何将在 ngTable 上设置属性转变为承诺
How do I turn setting a property on ngTable into a promise?
我试图"承诺"以下调用:
$scope.productsTable.params.page(page);
我的目标是手动跳转到某个页面,然后在页面加载后在该页面上执行一些操作。
问题是 page()
方法不返回 promise,所以我必须手动创建一个。我只是不知道该怎么做。
有人提到我可以使用$q.when(params.page(n))
,但这不起作用...所以也许我用错了?
这是page()
方法:https://github.com/esvit/ng-table/blob/master/ng-table.js#L148-L150
然后触发$watch
(调用使用 ajax 的reload()
)。
https://github.com/esvit/ng-table/blob/master/ng-table.js#L481-L492
我正在考虑尝试创建自己的自定义page()
方法,该方法不会触发手表,并手动(或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
});
尝试
var promise = $q.when($scope.productsTable.params.page(page))
if(promise.then)
promise.all(function(){//do staff})
else
//do staff without promise
在您的情况下,页面方法不会从源代码返回任何承诺,只是重新创建参数对象或工厂。通过使用 promise.all 将多个承诺合并为一个承诺,当解析所有输入承诺时,将解析该承诺。如果没有承诺,意味着你不需要等待承诺,如果存在你应该等待解决
相关文章:
- RegEx删除空属性?例如,如果(class=“”||class=“”)移除;否则就下课
- 全局变量和全局对象的属性之间有什么区别吗
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- 如何在Bootstrap Modal中为动态点击生成的变量设置jade属性
- 序列化数据属性中对象的最可靠方法
- 分析高度属性时出现意外值{{specs.height}}.index.html
- TypeError:无法读取属性'推'未定义的JavaScript
- 同样,同样的错误'ahorcado.js:26未捕获类型错误:无法读取属性'beginPath'
- AngularJS-使用'true'属性
- 可以't使用JavaScript获取width属性
- 未捕获的TypeError无法读取未定义的属性socialsharing
- 如何使用javascript获取嵌套对象中所有子对象的单个属性
- JavaScript Pub/Sub属性访问问题
- 从JavaScript访问struts操作中的属性
- 是否可以从父类访问子类的属性
- 如何更改reactjs中外部/独立组件的状态或属性
- 如何在选项卡上定义属性'的主窗口对象
- 锚点元素的href属性自动更改
- jQuery最近父级的数据属性选择器
- 如何将在 ngTable 上设置属性转变为承诺