0

我已经将一个简单的字符串数组绑定到一个列表。
淘汰赛正确地显示了这一点。

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

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

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函数以显示列表项中的文本;[“一”、“二”、“三”]中的任何一个。

这感觉像是一个很容易解决的问题,但自从我第一天被淘汰以来,也许我错过了一些基本的东西。

4

1 回答 1

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/

于 2013-07-04T14:13:48.897 回答