Ich habe eine Dashboard-Komponente erstellt, die andere Komponenten mithilfe der Knockout-Komponente Bindung lädt. Verwenden von Typescript. Grundsätzlich funktioniert es.Übergeben Sie benutzerdefinierte Parameter in typescript-definierte Knockout-Komponente geladen als AMD mit requirjs
Die Komponenten werden wie folgt registriert ...
ko.components.register('camera-widget', {
viewModel: { require: 'Scripts/app/Widgets/CameraWidget/ViewModels/CameraWidgetViewModel' },
template: { require: 'text!Scripts/App/Widgets/CameraWidget/Views/CameraWidget.html' }
});
... und instanziiert die Komponente Bindungs cusing (wobei tagName = 'Kamera-widget' und Parameter = {/ * einige Anfangswerte haben, die Komponente ihre Daten geladen * /}):
<div data-bind="component: tagName, params: parameters"></div>
in Maschinenschrift der CameraWidgetViewModel Klasse wie folgt definiert ist:
import ko = require('knockout');
import PagerSettings = require('../Models/PagerSettings');
import PagerSettingsViewModel = require('./PagerSettingsViewModel');
import CameraViewModel = require('./CameraViewModel');
class CameraWidgetViewModel implements CameraWidget.ICameraWidgetViewModel {
constructor (data: any) {
if (data.someValue) {
// BOOOOM! data is undefined
}
}
}
export = CameraWidgetViewModel;
Zusammengestellt in JS ist die CameraWidgetViewModel Klasse in einer anonymen Funktion eingewickelt:
define(["require", "exports", 'knockout', '../Models/PagerSettings', './PagerSettingsViewModel'], function (require, exports, ko, PagerSettings, PagerSettingsViewModel) {
var CameraWidgetViewModel = (function() {
function CameraWidgetViewModel(data) {
}
});
});
Wie kann ich die Parameter aus der Komponente verwalten Bindung in diesen inneren Funktionsaufruf übergeben werden?
Sollte die Komponente nicht initialisiert werden mit 'data-bind =" Komponente: {Name: TagName, Parameter: Parameter} "'? – user3297291
Das ist richtig. Hm. Vielen Dank. Würde deine als Antwort markieren, wenn ich könnte. –
Ich schreibe es als Antwort auf, damit andere Leute es auch finden können. – user3297291