2011-12-24 2 views
1

Что я делаю неправильно? Я пытаюсь создать простой просмотр основных деталей a la «канонический MVVM».Основные сведения в нокаут JS

Вот упрощенный пример в JSfiddle, что не работает: http://jsfiddle.net/UJYXg/2/

Я хотел бы ожидать, чтобы увидеть название выбранного пункта «» в текстовом поле, но вместо этого он говорит: «наблюдаемым»?

Вот мой обижая код:

var list = [ { name: "item 1"} , { name: "Item 2" }]; 

var viewModel = { 
    items : ko.observableArray(list), 
    selectedItem : ko.observable(), 
} 

viewModel.setItem = function(item) { 
    viewModel.selectedItem(item); 
} 

ko.applyBindings(viewModel); 

И HTML

<ul data-bind="foreach: items"> 
    <li> 
     <button data-bind="click: $root.setItem, text:name"></button> 
    </li> 
</ul> 

<p> 
    <input data-bind="value:selectedItem.name" /> 
</p> 

ответ

3

Вы действительно близки. Просто нужно сделать value: selectedItem().name или лучше использовать привязку with, чтобы изменить область действия. Кроме того, сценарий, на который вы ссылаетесь, немного устарел (в 2.0 клике проходит данные в качестве первого аргумента).

Образец здесь: http://jsfiddle.net/rniemeyer/acUDH/

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