尝试在类似javascript中使用角度ngTable

时间:2014-09-28 15:58:48

标签: javascript angularjs coffeescript ngtable

我正在尝试在我的项目中使用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)。

你们对这种方法有什么看法,甚至可能,或者我离开了?

谢谢!

1 个答案:

答案 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)。