我将一个简单的字符串数组绑定到列表中 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中的文本; [“一”,“二”,“三”]中的任何一种。
这感觉就像一个容易解决的问题,但是因为它是我淘汰赛的第一天,也许我错过了一些基本的东西。
答案 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/