シンプルなNativescriptアプリケーションがあります。モデルがpromise.then()に設定されていると、Nativescriptのバインドされたプロパティが更新されない
model.pathプロパティを更新すると、正しく設定され、UIのラベルにその値が表示されます。
しかし、私は戻っ約束の.then(...)機能(新しい約束(...))にmodel.pathプロパティを設定するプロパティが設定されている(警告uploadFileでは、 (...)メソッドが正しい値を示していますが、UIのラベルはもう更新されません。どうして?
メインpage.xml:
<Page xmlns="http://schemas.nativescript.org/tns.xsd" loaded="pageLoaded">
<StackLayout>
<Button width="200" height="66" text="Record!" tap="recordVideo"></Button>
<Label text="{{path}}"></Label>
</StackLayout>
</Page>
メインページmodel.ts:
import { Observable } from 'data/observable';
export class MainPageModel extends Observable {
private _path: string;
constructor() {
super();
}
public get path(): string {
return this._path;
}
public set path(value: string) {
this._path = value;
super.notify({ object: this, eventName: Observable.propertyChangeEvent, propertyName: "path", value: this._path });
}
}
メインpage.ts:
import { VideoRecorder } from 'nativescript-videorecorder';
import { MainPageModel } from './main-page-model';
import { EventData } from "data/observable";
import { Page } from "ui/page";
var model: MainPageModel;
export function pageLoaded(args: EventData) {
let page = <Page>args.object;
model = new MainPageModel();
page.bindingContext = model;
}
export function recordVideo() {
model.set("path", "clieckedd");
let videorecorder = new VideoRecorder();
let options = {
saveToGallery: true, //default false | optional
duration: 10, //(seconds) default no limit | optional
size: 10, //(MB) default none | optional #android
hd: false, //default false low res | optional
explanation: "Why do i need this permission" //optional on api 23 #android
};
videorecorder.record(options)
.then((data) => {
model.set("path", data.file);
uploadFile(model);
})
.catch((err) => {
console.log(err);
model.path = err;
});
}
function uploadFile(model: MainPageModel) {
alert(model.path);
}
exports.model = model;
が
別の使用例で私は同じ問題を抱えています: 'status = new BehaviorSubject(" "); channel.subscribe(m => this.onMessage) 'です。 onMessageは 'status.next(" bla ")でステータスを更新します。プロパティは正しく更新されますが、UI状態の変更はありません。私は更新をトリガするボタンをクリックします。私は角度を使っていますが、何が起こっているのか分かりません。ドキュメントには何も言われていません。 –