2013-07-04 2 views
0

Я связал простой массив строк со списком.
Нокаут отображает это правильно.Выберите строку для связанного строкового массива

<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 функцию так, что он будет отображать текст из элемента списка; либо из «одного», «двух», «трех».

Это казалось легкой проблемой для решения, но с момента моего первого дня с нокаутом, может быть, мне не хватает чего-то основного.

ответ

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/

+0

Спасибо! Это сработало. 8 минут, прежде чем я смогу принять. – nunespascal

+0

Добро пожаловать. –

Смежные вопросы