0

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

当用户单击“编辑帖子”时,我调用 KO 单击和“选择”功能(所有工作).. 当我这样做时,所选行被正确绑定。

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

<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>

如果“单击”然后执行“使用:选择”,我该如何编写数据绑定?

更新

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

4

2 回答 2

1

通常,您只希望它可以从Selected可观察到的情况下工作。如果未填充,则不会渲染该区域。如果它被聚合,那么任何Selected持有的对象都将被使用。

所以,当你打电话时,$parent.select你会想要填充Selected你的对象。

事实上,可观察对象是函数,因此除非您需要运行其他逻辑,否则您甚至可以走捷径,click直接将您的对象绑定Selected到可观察对象。当前数据作为第一个参数传递,它设置 observable 的值。

于 2013-01-26T02:47:01.467 回答
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);
};

然后,随着 Selected 的变化......您的 Name 绑定将自动更新。

于 2013-01-26T08:12:38.257 回答