Шаблоны knockoutjs и jQuery - передача значения в обработчик кликов в шаблоне - PullRequest
0 голосов
/ 31 августа 2011

Настройка:

Я использую нокаут с шаблонами jQuery по умолчанию.

У меня есть выпадающий список (комбинированный) и таблица.Таблица содержит список предметов.В каждой строке есть тд с названием элемента и тд с ссылкой «Удалить».

Если элемент находится в комбинированном списке, его нет в таблице, и наоборот.

Если я выберу элемент в комбо, произойдут три вещи:

  1. Значение будет записано в мою модель (this.selectedCostCentre = ko.observable ('');)

  2. элемент добавляется в таблицу.

  3. элемент удаляется из комбо.

Итакочень хорошоПроблема в том, что когда я удаляю элемент из таблицы, я хочу добавить его обратно в комбо:

Я удаляю элемент с помощью кнопки удаления.Моя проблема в том, что я не могу найти способ указать, какой элемент удаляется.

Итак, проблема в следующем:

Как я могу передать значениеэлемент, который я удаляю в таблице в метод моей модели представления, который обрабатывает событие щелчка для привязки данных ссылки удаления?

Код:

Таблица:

<fieldset style="padding-top:10px;">
    <legend>Actividades Asociadas</legend>
    <table>
        <thead>
            <tr>
                <th>
                    Actividad
                </th>
                <th>&nbsp;&nbsp;</th>
            </tr>
        </thead>
        <tbody data-bind="template: {name:'actividadesAsociadas', foreach: viewModel.costCentres}"></tbody>
    </table>
</fieldset>
<script type="text/x-jquery-tmpl" id="actividadesAsociadas">
    <tr>
        <td data-bind="text: NameCC"></td>
        <td><a href="#" data-bind="click: function() { viewModel.removeCC('how to identify the item being deleted?') }">Delete</a></td>
    </tr>
</script>

Комбо:

<fieldset>
    <legend>Asociar Actividades a la Cuenta</legend>

    <div class="editor-label">
        Elija Actividad
    </div>
    <div class="editor-field">
        <select id="All" data-bind="options: allCostCentres, value: selectedCostCentre, optionsValue: 'CostCentreId', optionsText: 'NameCC', optionsCaption: 'Choose...'"></select>
    </div>
    <input type="hidden" name="AccountId" id="AccountId" value="@Model.AccountId" />
</fieldset>

Определение проблемы:

Строка, с которой у меня проблемы:

<td><a href="#" data-bind="click: function() { viewModel.removeCC('how to identify the item being deleted?') }">Delete</a></td>

1 Ответ

0 голосов
/ 31 августа 2011

ОК, только что ответил на мой собственный вопрос: Синтаксис:

<a href="#" data-bind="click: function() { viewModel.removeCC($data) }">Delete<a/>

То есть ответ:

$data
...