Kann ein Knockout custom element das params-Attribut an ein Objekt wie ein Component binding gebunden haben?Kann ein benutzerdefiniertes Element ein Objekt für die Params wie die Komponente Binding übergeben werden?
Zum Beispiel habe ich die folgende Komponente definiert:
ko.components.register('user-widget', {
template: '<p><span data-bind = "text:fullName" ></span></p>',
viewModel: function (params) {
this.fullName = params.firstName + ' ' + params.lastName;
}
});
und die folgenden VM:
function VM() {
this.user = {
firstName: 'Joe',
lastName: 'Baker'
};
}
Wenn eine Komponente mit Bindung ich die Benutzereigenschaft der VM übergeben kann direkt an den params Attribut wie folgt:
<div data-bind='component:{name:"user-widget", params:user}'></div>
Wenn ich jedoch ein benutzerdefiniertes Element verwende, muss ich t auspacken er Benutzereigenschaft wie folgt:
<user-widget params="firstName:user.firstName, lastName:user.lastName"></user-widget>
Ich habe versucht, ein eigenes Element unter Verwendung mit einer Bindungskomponente in etwa so:
<user-widget data-bind='component:{params:user}'></user-widget>
die in den folgenden Fehler führt:
Cannot use the "component" binding on a custom element matching a component
Das ist nicht genau das, was ich suche. Ich weiß, dass ich einen einzelnen Parameter als ein Objekt übergeben kann, wie Sie es gezeigt haben. Ich möchte jedoch das Attribut params an ein einzelnes Objekt binden, wie dies bei der Komponentenbindung der Fall ist. –
Ich fürchte, was Sie suchen ist derzeit nicht möglich.Wenn Sie die Quelle betrachten, suchen benutzerdefinierte Komponenten gezielt nach einem Attribut "params". Es verwendet jedoch den Bindungsanbieter, um die Bindungen zu analysieren. Wenn Sie möchten, können Sie ein neues Bindungsschema erstellen, sodass Sie das übergebene Objekt stattdessen als analysierte Bindungen verwenden können. –
Tut mir leid, dass es so aussieht, als ob der bindende Provider nicht eingebunden werden kann. in diesem Fall –