Hallo Ich habe eine Aurelia Web App mit der Aurelia CLI läuft.Aurelia mit knockout sicherer Bindung
Davor habe ich SystemJS als Modullader verwendet, aber da ich die Content-Security-Policy meiner App durchsetzen möchte, um "unsafe-eval" nicht zuzulassen, habe ich die Aurelia CLI wie vorgeschlagen in geändert this question.
Meine App ist eine ehemalige Durandal-App, die ich nach Aurelia umwandel, deshalb wird Knockout extensiv verwendet. Ich bin mit der aurelia-Knockout-Plugin
export function configure(aurelia) {
aurelia.use
.standardConfiguration()
.developmentLogging()
.plugin('aurelia-knockout');
return aurelia.start().then(() => aurelia.setRoot());
}
und ich habe sowohl den Knockout und die Ko-secure-Bindung npm Pakete installiert (wie Sie in meinem main.js sehen können) und konfigurierte sie in den aurelia.json Datei:
"dependencies": [
"aurelia-binding",
"aurelia-bootstrapper",
"aurelia-dependency-injection",
"aurelia-event-aggregator",
"aurelia-framework",
"aurelia-history",
"aurelia-history-browser",
"aurelia-loader",
"aurelia-loader-default",
"aurelia-logging",
"aurelia-logging-console",
"aurelia-metadata",
"aurelia-pal",
"aurelia-pal-browser",
"aurelia-path",
"aurelia-polyfills",
"aurelia-route-recognizer",
"aurelia-router",
"aurelia-task-queue",
"aurelia-templating",
"aurelia-templating-binding",
{
"name": "text",
"path": "../scripts/lib/text"
},
{
"name": "aurelia-templating-resources",
"path": "../node_modules/aurelia-templating-resources/dist/amd",
"main": "aurelia-templating-resources"
},
{
"name": "aurelia-templating-router",
"path": "../node_modules/aurelia-templating-router/dist/amd",
"main": "aurelia-templating-router"
},
{
"name": "aurelia-knockout",
"path": "../node_modules/aurelia-knockout/dist/amd",
"main": "aurelia-knockout"
},
{
"name": "knockout",
"path": "../node_modules/knockout/build/output",
"main": "knockout-latest"
},
{
"name": "knockout-secure-binding",
"path": "../node_modules/knockout-secure-binding/dist",
"main": "knockout-secure-binding.min"
},
{
"name": "aurelia-testing",
"path": "../node_modules/aurelia-testing/dist/amd",
"main": "aurelia-testing",
"env": "dev"
}
]
ich weiß, ich habe den folgenden Code verwenden (wie ich in meinem alten Durandal App tat) Knockout sichere Bindung zu aktivieren:
var options = {
attribute: "data-bind", // default "data-sbind"
globals: window, // default {}
bindings: ko.bindingHandlers, // default ko.bindingHandlers
noVirtualElements: false // default true
};
ko.bindingProvider.instance = new ko.secureBindingsProvider(options);
aber ich weiß nicht, wie es zu benutzen in diesem neuen Aure LiApp, oder im Allgemeinen, wie man das Aurelia-Knockout-Plugin benutzt, um die sichere bindende Version von Knockout zu benutzen. Ich habe meine main.js versucht modifizierende Datei wie folgt aus:
export function configure(aurelia) {
var options = {
attribute: "data-bind", // default "data-sbind"
globals: window, // default {}
bindings: ko.bindingHandlers, // default ko.bindingHandlers
noVirtualElements: false // default true
};
ko.bindingProvider.instance = new ko.secureBindingsProvider(options);
aurelia.use
.standardConfiguration()
.developmentLogging()
.plugin('aurelia-knockout');
return aurelia.start().then(() => aurelia.setRoot());
}
oder sogar die aurelia-knockout.js Datei im npm Modul zwicken, die sichere Datenflußdefinition Einfügen kurz vor dieser Linie
ko.applyBindings(executionContext, this.element);
aber, selbst wenn ich keine Build-Fehler (ich baue mit dem Befehl "au build") keine der oben genannten funktioniert.
UPDATE
eingefügt I Kö Initialisierungscode in der 1. Zeile wie so
define(['exports', 'aurelia-dependency-injection', 'aurelia-templating', 'knockout-secure-binding'], function (exports, _aureliaDependencyInjection, _aureliaTemplating, _knockoutSecureBinding) {
direkt in
node_modules\aurelia-knockout\dist\amd\aurelia-knockout-custom-attribute.js
und I hinzugefügt einen Verweis auf den sicheren Bindungsmodul befestigt Bindung
und jetzt bekomme ich diesen Fehler:
Unhandled rejection TypeError: ko.secureBindingsProvider is not a constructor
als ob das sichere Bindungsmodul nicht gefunden/geladen wurde.
Wie auch immer, ich glaube nicht, dass das Verquirlen mit der "built" -Version eines node_moduls die ideale Lösung ist, ich suche nur nach einer Möglichkeit, es zum Laufen zu bringen. Ich freue mich immer noch auf bessere Vorschläge.