2015-06-18 2 views
0

Я зацикливаю элементы в инструкции foreach. На странице загрузки, по умолчанию я выбрать первый элемент (данные привязку = "CSS: {отмеченными: $ индекс() == 0}"):knockoutjs make selectable items onclick внутри foreach

var viewModel = function(){ 
var self = this; 
self.pattern_index = 0; 
self.select = function(data) { 
    //handle click 
}; 
self.makes = [ 
    {id:1, name: 'Northwoods Prestige'}, 
    {id:2, name: 'Forest Bay'}, 
    {id:3, name: 'Timberland'} 
]; 
}; 
var model = new viewModel(); 
ko.applyBindings(model); 

HTML:

<div class='oTitle'><span class="label label-primary">Patterns</span></div> 
    <div data-bind="foreach: makes"> 
     <div data-bind="css: { selected: $index() == 0 }, click: $root.select.bind($data)">xx </div> 
    </div> 

CSS:

.selected{background-color:red;} 

Мой вопрос заключается в том, чтобы сделать другие элементы по выбору, выбрав пункт Clicked (.selected) и удаление выбираемого класса от первого пункта

jsfiddle: http://jsfiddle.net/diegopitt/g57qs9a7/

+0

, если я не ошибаюсь, вы вывесили один такой вопрос, вчера я ответил, что (проверьте Комментарии) . cheers –

+0

@supercool Кажется, что OP задает очень похожую серию вопросов. http://stackoverflow.com/questions/30926278/passing-index-and-data-as-arguments-to-function-for-click-handler – CrimsonChris

+0

@CrimsonChris ha true через разные учетные записи. –

ответ

1

Наблюдаемые selectedIndex, которые могут использоваться в привязке css, чтобы определить, выбрана ли строка.

Пример:http://jsfiddle.net/Lgn4ppwo/

HTML

<div data-bind="foreach: makes"> 
    <div data-bind="css: { selected: $index() === $root.selectedIndex() }, click: $root.select.bind($root, $index())">xx </div> 
</div> 

вид Модель

function ViewModel() { 
    this.selectedIndex = ko.observable(0); 
    this.select = function(index) { 
     this.selectedIndex(index); 
    }; 
    ... 
}; 
+0

спасибо! Это работает. У меня есть еще один вопрос: мне нужно передать $ data в функцию select. Что мы передаем в $ root? Я вижу, что мы передаем 2 параметра функции выбора, но ожидаем, что это индекс ... –

+0

@DiegoP Вы должны посмотреть, как работает 'bind'. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind – CrimsonChris