Ich kämpfe über was sollte ein sehr einfaches Verfahren sein.DeSerializing JSON-Zeichenfolge in ein TS-Objekt
In der "geolocate.ts" -Funktion "setData", die Modellindizes? "Flugplan" und "Config" werden vom Chrome-Debugger als "nicht definiert" angezeigt, wenn sie von "model.flightplan" oder "model.config" referenziert werden. Das "Modell" -Objekt selbst scheint in Ordnung zu sein, selbst wenn es im Debugger expandiert ist.
Irgendwelche Gedanken oder Zeiger würden sehr geschätzt;)
geolocate.d.ts
export class FmsFlightPlan {
public status: string[];
...
}
export class Config {
public airportIcon: IconSettings;
...
}
export class InitModel {
public config: Config;
public flightplan: FmsFlightPlan;
}
geolocate.ts
import * as passedData from "./geoLocate.d";
let config: passedData.Config;
let flightPlan: passedData.FmsFlightPlan;
export function setModel(json: string): void {
console.log(json); // '{"Config": { "AirportIcon": {...} ...}, {"Flightplan": {"Status": [], ... } ...}' --- As expected (JSONlint OK)
const model: passedData.InitModel = JSON.parse(json);
console.log(model); // Chrome console: {Config: {…}, Flightplan: {…}}
flightPlan = model.flightplan; // flightPlan and config are assigned "undefined"
config = model.config; // "model" looks OK and Intellisense works.
flightplanDraw();
}
TSC erzeugt Javascript
function setModel(o) {
console.log(o);
var e = JSON.parse(o);
console.log(e), flightPlan = e.flightplan, config = e.config, flightplanDraw()
}
.NET Core-Ansicht Javascript
function gmapsReady() {
initMap();
$.getJSON("/Home/GetConfig",
null,
function(data) {
setModel(data);
});
}
.NET MVC-Controller
public JsonResult GetConfig()
{
// Load fplan and config objects
...
...
InitModel initModel = new InitModel
{
Flightplan = fplan,
Config = _config
};
string json = JsonConvert.SerializeObject(initModel);
return new JsonResult(json);
}
versuchen Sie 'flightPlan = model.Flightplan' und stellen Sie sicher, dass der Name genau der gleiche ist einschließlich der Kappen. JSON in JS ist case sensitive (; –
@ Helder De Baere: Vielen Dank für den Vorschlag, aber die Verwendung von model.Flightplan führt zu einem TSC-Kompilierungsfehler (wie zu erwarten) – JcMaltaDev
Dann würde ich vorschlagen, "Flugplan" in Ihrem umbenennen InitModel zu 'Flightplan' und auch für Config.Wenn das nicht funktioniert, ist wahrscheinlich etwas mit der Analyse des JSON zu Ihrem Modell nicht in Ordnung. –