2016-07-23 5 views
0

Я пишу в .js-файл и пытаюсь выполнить цикл через каждый элемент и добавить этот «self.renderButtons». когда я нажимаю на delete, он должен вызывать функцию remove. Это не так, может ли кто-нибудь помочь?data-bind в файле .js

 self.renderButtons = function (id) { 
    return ('<a href="' + '/Product/' + id + '" class="btn btn-sm btn-primary btn-margin-right"><span class="fa fa-file-text-o"></span> Details</a>' 
    + '<button class="btn btn-sm btn-danger" data-bind="click: removeItem"><span class="glyphicon glyphicon-trash"></span>&nbsp;Delete</button>'); 
} 
self.removeItem = function (item) { 
    $(document).trigger('loader-show'); 
    self.service.delete(item.Id, self.handleDelete, self.handleError); 
}; 
+0

Какая часть кода не работает? Есть ли ошибка в консоли браузера? –

+0

, когда я нажимаю кнопку «Удалить», а не на функцию removeItem. В консоли нет ошибок. f_martinez – Ajay

+0

Все кнопки добавляются после того, как все привязки уже применяются (так что привязки 'click' вообще не обрабатываются), или вы должны указать правильный контекст для' removeItem' (например, '$ root.removeItem'). Подумайте о том, чтобы расширить свой вопрос, добавив более подробную информацию о своей viemodel и о том, как используется метод renderButtons. –

ответ

0

Манипулирование DOM - задача нокаута. Если вы хотите иметь кнопку, соответствующую каждому элементу массива, это задание для foreach binding. Вы управляете наблюдаемым массивом, а Knockout позаботится о том, чтобы DOM отражал это состояние.