我正在尝试在我的项目中使用ngTable,我们将js逻辑类包装起来(实际上这是从coffescript翻译的,但我正在使用生成的js),源代码看起来像https://gist.github.com/orlybg/1531df6684f814f9a6f0。
我正在努力使http://bazalt-cms.com/ng-table/example/3适应我的项目。
表本身是生成/绘制的,我想知道的是在单击标题时对数据执行asc / desc排序。我甚至不需要分页。
this.$scope.tableParams = new this.ngTableParams({
page: 1, // show first page
count: 10, // count per page
sorting: {
name: 'id' // initial sorting
}
}, {
total: this.pools.length, // length of data
getData: this.getData(this.$q, params)
});
经过大量调整后我得到的最新错误是:ReferenceError:没有定义params 从上面的代码片段,所以我想知道ngTable params来自哪里以及如何将它传递给我的MyController.prototype.getData = function($ defer,params)。
你们对这种方法有什么看法,甚至可能,或者我离开了?
谢谢!
答案 0 :(得分:1)
您将getData属性绑定到函数的结果,而不是绑定到函数本身。
getData: function($defer, params) {
return ...
}
根据您对javascript的熟悉程度,可能会想到
getData: function ($defer, params) {
return this.getData(this.$q, params);
}
但这不起作用,因为JavaScript会在函数声明中抛弃this
。你可以做到
getData: this.getData.bind(this);
哪些可能不适用于旧浏览器,或者您可以
var that = this;
在开始创建参数之前,然后执行
getData: function ($defer, params) {
return that.getData(that.$q, params);
}
虽然我不确定你为什么使用这个。$ q因为你提到的例子并没有使用任何异步操作。您应该使用$ defer参数而不是$。$然后在函数末尾调用$ defer.resolve(yourData)。