2016-02-02 2 views
0

У меня есть команда и оценка по подсчетам, чтобы отслеживать, скажем, эстафету.для каждого с 2 наблюдаемыми коллекциями

Так как пользователь вводит команды в коллекцию, каждая команда будет получать очки, основанные на ранжировании.

https://jsfiddle.net/2ae3dv8d/

<strong>Teams:</strong> 
<!-- ko foreach: teams --> 
<div> 
    <input type="text" data-bind="value: name" /> 
</div> 
<!-- /ko --> 


function Team(name) 
{ 
    var self = this; 
    self.name = name' 
} 

function RankScoring(label, points){ 
    var self = this; 
    self.label = label; 
    self.points = points; 
} 

function AppViewModel() 
{ 
    var self = this; 
    self.teams = ko.observableArray([ 
    new Team('red'), 
    new Team('blue') 
    ]); 
    self.rankscoring = ko.observableArray([ 
    new RankScoring('1st', ''), 
    new RankScoring('2nd', ''), 
    new RankScoring('3rd', ''), 
    ]); 
} 

В этом конкретном примере, скажем, игра имела 2 команды. Таким образом, мне нужно будет использовать только 2 элемента из коллекции RankScoring на основе количества задействованных команд. Как мне привязать данные к методу RankScoring, чтобы пользователь мог вводить очки для ранжирования? И я приветствую предложения для более легкого способа достижения этой идеи.

**Teams:** 
Red 
Blue 

**Scoring** 
1st place - 10 
2nd place - 5 

ответ

1

Добавить вычислен показать текстовые поля для имеющихся рангов:

self.availablerankscoring = ko.computed(function(){ 
    return self.rankscoring().slice(0,self.teams().length); 
}); 

Добавить еще Еогеасп доступных рядов:

<!-- ko foreach: availablerankscoring --> 
<div> 
    <label data-bind="text: label"></label><input type="text" data-bind="value: points" /> 
</div> 
<!-- /ko --> 

Fiddle

+0

Пользователь должен иметь возможность войти точечные значения для ранжирования. – Rod

+0

Спасибо, я обновил на основе этого, чтобы позволить пользователю вводить столько же рангов, сколько есть команд. –

+0

Вы поняли! Спасибо :) – Rod

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