为动态创建的网格添加排序功能

时间:2013-10-16 06:39:14

标签: jquery knockout.js pagination

我使用了this example中所见的淘汰分页网格。 library动态创建一个网格表,我想在点击标题文本后使用sort函数稍微更改一下。

而不是

<th data-bind="text: headerText "> </th>

我想看到这个:

<th>
    <a data-bind="click: MyPage.sort, text: headerText" ></a>
</th>

但它不起作用。如果我拨打click: console.log(MyPage.sort),则会写入“未定义”,并在click: console.log(MyPage.sort())之后:

Object function MyPage() {
    // body of function
    ...
    self.sort = function(item, event) {
        console.log('qwerty')
        ...
    }
    ... } has no method 'sort'

在这个例子中有没有办法调用“sort”?还是有其他方法(除了更改knockout.simpleGrid.1.3.js)?

1 个答案:

答案 0 :(得分:1)

这是一个解决方案......

绑定后 - 使用jquery获取标题,然后将onclick事件链接到viewModel。

var headers = $('.ko-grid').find('th');
headers[0].onclick = function() { viewModel.sortByName(); };
headers[1].onclick = function() { viewModel.sortBySales(); };
headers[2].onclick = function() { viewModel.sortByPrice(); };

工作示例......

http://jsfiddle.net/2JxZA/1/