Dies scheint wie ein ziemlich einfacher Fall für mich, aber ich vermisse offensichtlich etwas. Ich habe ein Model, das an die View gebunden ist. Ich lade das Model dann mit einem Http-Aufruf. Warum wird die Ansicht nicht aktualisiert? Ich dachte, das wäre der springende Punkt der Einwegbindung.NativeScript One-Way Databinding aktualisiert nicht Ansicht
Ich habe überprüft, dass ich die Daten, die ich von dem http-Aufruf erwarte, zurückbekomme.
aktualisieren Ich habe eine Schaltfläche auf dem Bildschirm und Datenbindung wird der Bildschirm mit den http geladenen Daten für beide Felder auf Knopfdruck tatsächlich aktualisieren, auch wenn die Schaltfläche Methode setzt nur einen der Werte. Entweder gibt es einen Fehler in NativeScript oder ich mache etwas nicht richtig.
Update 2 Nur der Akt des Klickens auf die Schaltfläche löst die Bindung aus. Ich habe den Code geändert, um einen leeren Tipphandler zu haben, und wenn ich nur auf den Knopf klicke, wird er gebunden.
Typoskript
import { Component, ChangeDetectionStrategy, OnInit } from "@angular/core";
import { Job } from "../../shared/customer/job";
import { Http, Headers, Response } from "@angular/http";
import { Observable } from "rxjs/Rx";
@Component({
selector: "my-app",
templateUrl: "pages/job-details/job-details.html",
changeDetection: ChangeDetectionStrategy.OnPush
})
export class JobDetailsComponent implements OnInit {
job: Job;
salesAssociateName: string = "x";
constructor(private http: Http) {
this.job = new Job();
}
ngOnInit() {
this.getJob(1234);
}
getJob(leadId: number) {
var url = "https://url-not-for-you/job?franchiseeid=48&leadid=" + leadId;
var headers = this.createRequestHeader();
this.http.get(url, { headers: headers }).map(response => response.json())
.do(data => this.setData(data[0]))
.subscribe(
() => this.success(),
(error) => this.error()
);
}
private createRequestHeader() {
let headers = new Headers();
headers.append("AuthKey","blah");
headers.append("AuthToken", "blee");
return headers;
}
setData(job) {
this.job.FullName = job["FullName"];
this.job.SalesAssociateName = job["SalesAssociateName"];
this.salesAssociateName = this.job.SalesAssociateName;
console.log("Found job for customer: " + job["FullName"]);
}
success() {
// nothing useful
}
error() {
alert("There was a problem retrieving your customer job.");
}
changeSA() {
}
}
html
<StackLayout>
<Label [text]="job.FullName"></Label>
<Label [text]="salesAssociateName"></Label>
<Button text="Push" (tap)="changeSA()"></Button>
</StackLayout>
Eigentlich beobachtbare Parameter nicht arbeiten oder arbeiten von Zeit zu Zeit mit 'onPush' in NationalScript. Ich weiß nicht warum. –