使用由 SharePoint 支持的微风,如此处所述,并使用 TypeScript 而不是 JS。
在 DataService 类中,我创建一个 EntityManager 并执行一个查询:
private servicePath: string = '/api/PATH/';
private manager: breeze.EntityManager;
constructor() {
this.init();
}
private init(): void {
this.manager = new breeze.EntityManager(this.servicePath);
}
public ListResponses(): breeze.Promise {
var query = breeze.EntityQuery.from("Responses");
return this.manager.executeQuery(query);
}
然后我从我的视图模型中调用它,它工作正常:
private loadResponses(): void {
this.dataservice.ListResponses().then((data) => {
this.handleResponsesLoaded(data);
}).fail((error) => {
this.handleDataError(error);
});
}
private handleResponsesLoaded(data:any): void {
for (var i = 0; i < results.length; i++){
this.extendItem(results[i]);
}
this.renderList(results, "#tp-responses-list");
}
但是我尝试扩展每个项目都失败了,因为该项目entityAspect
是空的:
private extendItem(item: any): void {
item.entityAspect.propertyChanged.subscribe(() => { // FAILS HERE
setTimeout(() => {
if (item.entityAspect.entityState.isModified()) {
this.dataservice.SaveChanges().then((result) => {
tracer.Trace("SaveChanged Result: " + result);
}).fail((error) => {
this.handleDataError(error);
});
}
}, 0);
});
}
检查结果项后,我可以看到它只是普通数据对象,具有我期望的所有属性,但没有实体优点:
我刚刚开始使用微风,所以提出问题的最佳方式可能是:我在这里做错了什么?