Knockout JS使用IF语句和With Statement侦听click事件

时间:2013-01-25 23:17:05

标签: if-statement knockout.js onclicklistener

页面加载时输入字段应为空。

当用户点击“编辑帖子”时然后我打电话给KO点击并选择' function(all working)..当我这样做时,选中的行被正确绑定。

当前代码会自动绑定页面加载,因此第一条记录位于输入字段中。

<div data-bind="with: Selected">
    <input type="text" data-bind="value: Name" />
</div>
<i title="Edit Post" data-bind="click: $parent.select"></i>

示例黑客

<div data-bind="if **click: $parent.select then** with: Selected">
    <input type="text" data-bind="value: Name" />
</div>

<i title="Edit Post" data-bind="click: $parent.select"></i>

如果点击&#39;如何编写数据绑定?然后选择:选择&#39; ?

更新

添加示例代码:http://jsfiddle.net/uC8Vt/70/

2 个答案:

答案 0 :(得分:1)

一般来说,你只想让它在Selected可观察量之外运作。如果未填充,则不会渲染该区域。如果它是pooulated,那么将使用Selected持有的任何对象。

因此,当您致电$parent.select时,您希望使用您的对象填充Selected

实际上,observables是函数,所以除非你需要运行其他逻辑,否则你甚至可以使用快捷方式直接将click绑定到Selected observable。当前数据作为第一个参数传递,它设置了observable的值。

答案 1 :(得分:0)

您可以根据单击的项目更改Selected属性...

所以viewModel的示例可能就像......

var items = [{ Name: 'item1' }, { Name: 'item2' }];

var viewModel = {
    items: items,
    Selected: ko.observable(items[0])
}

viewModel.select = function(selectedItem) {
    // The first arg is the context of the item clicked
    // Selected in an observable
    viewModel.Selected(selectedItem);
};

然后,如所选更改...您的名称绑定将自动更新。