knockoutjs cliquez sur la liaison à l'intérieur de foreach liaison
EDIT: Problème n'était pas lié à la liaison, mais à une simple erreur JavaScript.
J'ai une question concernant un clic de liaison à l'intérieur d'un foreach de liaison.
J'ai une liste avec des éléments montrant une zone de liste déroulante pour sélectionner une valeur à partir des données de base. Les éléments peuvent être ajoutés et retirés de cette liste.
Le bouton pour supprimer des éléments est imbriqué dans le foreach de liaison. Donc je m'attend à ce que je doit le lier avec $parent>
<button data-bind="click: $parent.removeNumber">-</button>
Qui ne fonctionne pas. Mais la version suivante fonctionne:
<button data-bind="click: removeNumber">-</button>
Je ne comprends pas pourquoi.
Le code:
<h2>numbers:</h2>
<ul data-bind="foreach: numbers">
<li>
<select data-bind="value: id,
options: masterData,
optionsText: 'caption',
optionsValue: 'id'"></select>
<br />
value: <span data-bind="text: id"></span>
<br />
<button data-bind="click: $parent.removeNumber">-</button>
</li>
</ul>
<button data-bind="click: addNumber">+</button>
function ViewModel() {
self.masterData = [{ id: 1, caption: "One"},
{ id: 2, caption: "Two"}];
self.numbers = ko.observableArray([{
id: ko.observable(2)}]);
self.addNumber = function() {
self.numbers.push({
id: ko.observable(2)
});
};
self.removeNumber = function(item) {
self.numbers.destroy(item);
console.log("removed" + item);
};
}
var viewModel = new ViewModel();
ko.applyBindings(viewModel);
J'ai créé un violon (avec la version de travail):
http://jsfiddle.net/delixfe/NWWH8/
Merci pour votre aide.
OriginalL'auteur delixfe | 2012-06-05
Vous devez vous connecter pour publier un commentaire.
Vous m'avez eu une seconde!
Vous sont corrects,
$parent
devrait être obligatoire. Votre erreur a été de ne pas définirself
dans votre viewmodel. Après avoir fait cela,$parent
sur le removeButton, ainsi que lamasterData
de liaison.Ici est un travail de violon: http://jsfiddle.net/FpSWb/
jsfiddle ne fonctionne pas
OriginalL'auteur Tyrsius