为绑定的字符串数组选择一个字符串

时间:2013-07-04 14:10:55

标签: javascript knockout.js

我将一个简单的字符串数组绑定到列表中 Knockout正确显示了这一点。

<input data-bind="value: clicked" />
<ul data-bind="foreach: strArr, click: $root.selectStr">
    <li data-bind="text: $data"></li>
</ul>

当用户点击其中一个列表项时,我想填充我与列表项绑定的字符串。然而,我的点击功能接收的对象似乎是完整的淘汰模型。

function StringViewModel() {
    var self = this;
    self.strArr = ko.observableArray(["one", "two", "three"]);
    self.clicked = ko.observable();

    self.selectStr = function (str) {
        console.log(str);
        self.clicked(str);
    }
}
ko.applyBindings(new StringViewModel());

这是jsFiddle

如何编写selectStr函数,以便显示list-item中的文本; [“一”,“二”,“三”]中的任何一种。

这感觉就像一个容易解决的问题,但是因为它是我淘汰赛的第一天,也许我错过了一些基本的东西。

1 个答案:

答案 0 :(得分:1)

您应该将点击处理程序添加到li元素而不是ul

<input data-bind="value: clicked" />
<ul data-bind="foreach: strArr">
    <li data-bind="text: $data, click: $root.selectStr"></li>
</ul>

这是工作小提琴:http://jsfiddle.net/BqGrR/1/