我在这里很新,但这个网站已经给了我很多帮助,所以我希望你们能帮我解决一个问题。
我刚开始使用KnockoutJS进行编码,到目前为止我喜欢它,这对我来说是非常不同的编程方式,但我已经看到了它给我带来的好处。
但是,我遇到了一个小问题,这可能很简单,但我无法完成。
我删除了我的代码以查明此处的问题。
我有一个由KO中的foreach绑定生成的列表但是当我点击它时我想要一个jQuery事件发生,在这种情况下,例如我希望它用动画隐藏。
正如您在代码中看到的那样,我可以简单地在dom-ready函数中在脚本底部写一些行,并在ul中对al li元素进行硬编码,但由于我选择的事实(在其他原因)在KO中编写代码来整理大项目的代码我真的想编写jquery事件,当用户点击li来点击绑定时就会发生这种情况。
这是我的代码,为方便起见,我也做了一个小问题: http://jsfiddle.net/edleutscher/JTa5Y/
JS:
function AppViewModel() {
var self = this;
self.people = ko.observableArray([
{ name: 'Bert' },
{ name: 'Charles' },
{ name: 'Denise' }
]);
self.clickAction = function(data) {
$(data).hide();
}
}
ko.applyBindings(new AppViewModel());
HTML:
<ul data-bind="template: { name: 'rowTemplate', foreach: people }"></ul>
<script type="text/html" id="rowTemplate">
<li data-bind="click: function() { $root.clickAction($data) }">${name}</li>
</script>
提前致谢!
答案 0 :(得分:1)
您需要将事件传递给click函数,以便您可以访问被单击的元素。
您的点击功能:
self.clickAction = function(data, event) {
$(event.target).hide();
}
数据绑定语句
<script type="text/html" id="rowTemplate">
<li data-bind="click: function(vm, event) { $root.clickAction($data, event) }">${name}</li>
</script>