knockout.js, jquery-ui, нажатие кнопки и параметр - PullRequest
0 голосов
/ 23 марта 2012

Я использую jQuery UI, чтобы создать «кнопку» для данного элемента HTML. Я использую Knockout.js для создания HTML-элемента (foreach).

Однако я не могу найти способ передачи параметра в событие click для сгенерированных элементов knockout.js. В следующем примере работает несколько статичный sampleButton, но не элементы itemButton. http://jsfiddle.net/patware/QVeVH/

function ViewModel() {
    var self = this;

    self.ping = 'pong';

    self.items = ko.observableArray([
        { display: 'Cars', id: 1 },
        { display: 'Fruits', id: 2 },
        { display: 'Humans', id: 3 },
        { display: 'Software', id: 4 },
        { display: 'Movies', id: 5 },
    ]);
}

ko.applyBindings(new ViewModel());

$("#sampleButton").button().data('someData',101);
$("#sampleButton").click(function(e){
    alert('clicked sample: [' + $(this).data('someData') + ']');
});

$(".itemButton").button().data('someData',$(this).id);

$(".itemButton").click(function(){
    alert('clicked item: [' + $(this).attr('foo') + ']');
});

ping-<span data-bind="text: ping"></span>

<div id="sample">
<div id="sampleButton">
    <h3>Sample Button</h3>
    <a href="#">Click here too</a>
</div>
</div>

<div data-bind="foreach: items">
<div class="itemButton" data-bind="foo: id">
    <h3 data-bind="text:display"></h3>
    <a href="#" data-bind="text:display"></a>
</div>
</div>​

Ответы [ 2 ]

1 голос
/ 23 марта 2012

Вы можете настроить все, используя пользовательскую привязку.

http://jsfiddle.net/jearles/QVeVH/7/

1 голос
/ 23 марта 2012

Попробуйте использовать ko.dataFor вместо применения данных с помощью jquery. Рабочий образец на основе вашего примера http://jsfiddle.net/QVeVH/6/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...