我有一個簡單的Nativescript應用程序。當模型設置爲promise時,未更新Nativescript - 綁定屬性的視圖。()
當我更新model.path屬性它設置正確,UI中的標籤顯示其值。
但是,當我在。那麼(...)退還承諾功能(新希望(...))設置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」)更新狀態'屬性被正確更新,但是,沒有用戶狀態改變ultil我點擊了一些按鈕,這會觸發更新。我使用角度,我不知道發生了什麼,文檔沒有說什麼。 –