如何将当前元素传递给绑定到click事件的函数?

时间:2011-08-05 09:43:42

标签: javascript knockout.js

以下是代码示例:

<table>
    <tr data-bind='template: { name: "GridColumnTable", foreach: columns }' ></tr>
</table>    

<script type="text/html" id="GridColumnTable">       
    <td>
        <span data-bind="text:name, click:function(event){ alert('blabla') }">
          none 
        </span>      
    </td>
</script>

这是Javascript代码:

var viewModel = {
    columns: new ko.observableArray(),
    changeColumnName: function(column)
    {
        column.name('asdas');
    }
}

viewModel.columns.push({       
    name: new ko.observable('column1')
});

    viewModel.columns.push({       
    name: new ko.observable('column2') 
});

    viewModel.columns.push({       
    name: new ko.observable('column3') 
});

    viewModel.columns.push({       
    name: new ko.observable('column4')
});       


ko.applyBindings(viewModel);

另见JSFiddle

我想在用户点击时更改列名。但我不知道如何将当前元素传递给我的changeColumnName函数。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

在jQuery模板内部,变量$data引用模板绑定的数据。因此,您需要致电:viewModel.changeColumnName($data)