Κώδικας:
export class ViewModel {
public users: knockout.koObservableArrayBase;
constructor () {
this.users = ko.observableArray([]);
this.removeUser = this.removeUser.bind(this);//<-- Here compiller shows error
}
removeUser(user: User): void {
this.users.remove(user);
}
}
HTML:
<table>
<thead>
<tr>
<th>Name</th>
<th>Surname</th>
</tr>
</thead>
<tbody data-bind=foreach: users>
<tr>
<td><a href=# data-bind=click: $root.removeUser>Remove</a></td>
<td data-bind=text: name></td>
<td data-bind=text: surname></td>
</tr>
</tbody>
</table>
Το πρόβλημα είναι στη μέθοδο removeUser. Από προεπιλογή, αν δεν δεσμεύουν το πλαίσιο, αυτό == UserToDelete - δεν viewModel αντικείμενο. Αν έχω την προσθήκη κατασκευαστή: this.removeUser = this.removeUser.bind(this); (manually enforce context), τότε το πλαίσιο είναι ανάλογα με τις ανάγκες αυτής της == viewmodel, αλλά στη συνέχεια γραφομηχανή παραπονιέται για «Δεν είναι δυνατή η μετατροπή Λειτουργία για να. (Χρήστη: Ο χρήστης) => κενό απαιτεί μια κλήση υπογραφές, αλλά η λειτουργία δεν έχει ένα»













