ここで説明するように、SharePointに裏打ちされたそよ風を操作し、JSではなくTypeScriptを使用します。
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
がnullであるため、各アイテムを拡張しようとして失敗します。
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);
});
}
結果アイテムを調べると、それが単なるデータオブジェクトであり、期待するすべてのプロパティがあり、エンティティの良さはないことがわかります。
私はそよ風から始めたばかりなので、質問をするための最良の方法はおそらく、ここで何を間違えたのかということです。