Я использую нокаут foreach для отображения списка игровых досок.Игровое поле имеет класс / идентификатор «gameBoard».
Я хочу иметь возможность изменять фоновое изображение только игрового поля, которое обнаруживает изменение счета.
Проблема в том, когда foreachгенерирует доски, все они получают одно и то же имя класса / идентификатора, поэтому нет возможности строго ссылаться на эту отдельную доску. Изменение фона после запуска метода подписки homeTeamScore.observables, вероятно, самая простая ставка, и она настроена, но я не знаю, какдля ссылки на доску.
<div data-bind="foreach: collection">
<div id="gameBoardTemplate" type="text/html">
<div id="gameBoard" data-bind="visible: IsVisible">
<div class="gameHeader">
<h1 class="gameNameHeader" data-bind="text:'Game ' + GameChannel()"></h1>
</div> <!-- End of game header -->
.............. etc
строка 3 выше - это div, я хочу изменить фон
Ниже приведена копия некоторых материалов по нокаутам и JavaScript.
var Board = function (gameChannel, homeTeamImage, homeTeamName, homeBeerPrice, homeTeamArrow, homeBeer, homeBeerAdjustedPrice, homeTeamScore, awayTeamArrow, awayBeerPrice, awayTeamName, awayBeerAdjustedPrice, awayBeer, awayTeamImage, awayTeamScore, isVisible) {
this.GameChannel = ko.observable(gameChannel);
this.HomeTeamImage = ko.observable(homeTeamImage);
this.HomeTeamName = ko.observable(homeTeamName);
this.HomeBeerPrice = ko.observable(homeBeerPrice);
this.HomeTeamArrow = ko.observable(homeTeamArrow);
this.HomeBeer = ko.observable(homeBeer);
this.HomeBeerAdjustedPrice = ko.observable(homeBeerAdjustedPrice);
this.HomeTeamScore = ko.observable(homeTeamScore);
this.AwayTeamArrow = ko.observable(awayTeamArrow);
this.AwayBeerPrice = ko.observable(awayBeerPrice);
this.AwayTeamName = ko.observable(awayTeamName);
this.AwayBeerAdjustedPrice = ko.observable(awayBeerAdjustedPrice);
this.AwayBeer = ko.observable(awayBeer);
this.AwayTeamImage = ko.observable(awayTeamImage);
this.AwayTeamScore = ko.observable(awayTeamScore);
this.IsVisible = ko.observable(isVisible);
this.FullScore = ko.computed(function () { return this.HomeTeamScore() + " | " + this.AwayTeamScore(); }, this);
this.HomeTeamScore.subscribeChanged(function (newScore, oldScore) {
if (oldScore.localeCompare("") == -1) {
showTouchdownAnimation();
}
});
this.AwayTeamScore.subscribeChanged(function (newScore, oldScore) {
if (oldScore.localeCompare("") == -1) {
showTouchdownAnimation();
}
});
}
//This gets populated through an ajax call so its not always blank. Assume its always populated correctly
var viewModel = {
// Game board placeholders
collection: [
new Board("0", "", "", "", "", "", "", "", "", "", "", "", "", "", "",false),
new Board("0", "", "", "", "", "", "", "", "", "", "", "", "", "", "",false)
]
};
ko.applyBindings(viewModel);
Я хочу сослаться на конкретную доску, которая запустила метод подписки HomeTeamScore (), и изменить фон, но как мне это сделать, когда всем доскам дают одинаковые имена классов и идентификаторов, когда цикл foreach выполняет итерацию и создает их.
Спасибо!