У меня есть проект, где я не могу понять, как получить доступ к наблюдаемому массиву из события click, вызванного из шаблона контейнера. У меня есть урезанный пример в скрипке здесь:Как я могу получить доступ к наблюдаемому массиву в моем клик-событии?
Событие щелчка указано в шаблоне, который динамически загружает шаблон для каждого элемента из свойства на самом изделии.
Так пример деталь:
{ID: 1, TemplateName: 'template1', Label: 'Name', Description: 'Your name'}
"родительский" шаблон выглядит следующим образом:
<script type="text/html" id="tpl-placeholder">
<div class="entry" data-bind="click: $parent.RemoveEntry, attr: { id: ID}, template: {name: TemplateName }"></div>
</script>
И динамически загруженный шаблон выглядит следующим образом:
<script type="text/html" id="template1">
<h1 data-bind="text: Label"></h1>
<div data-bind="text: Description"></div>
</script>
В метод, который обрабатывает событие click - в этом случае RemoveEntry - я получаю null при попытке доступа к общему ervableArray (Записи).
Вот ViewModel:
var viewModel = {
Name: ko.observable("Entries"),
Entries: ko.observableArray(entries),
RemoveEntry: function (entry) {
// how do I access the "Entries" list here - this.Entries returns null
$("#debug").text(this.Entries == null);
this.Entries.remove(entry);
}
};
Я Нокаут Newb .. может кто-нибудь сказать мне, что я делаю неправильно здесь? Спасибо!
Привет Кит, похоже, что я ответил на мой собственный вопрос, и в то же время вы отправили это. Вы заметили, что ваша скрипка не работает? Шаблоны не загружаются. – obliojoe
Да, я только что заметил, как вы это делаете, а это не так, как обычно люди рассматривают модели, поэтому я просто добавил скрипку с тем, что обычно делается –
Да, спасибо Кит. Это имеет смысл. Ура! – obliojoe