私はそよ風.js クエリから監視可能な配列を返そうとしています。
問題
typescript のメソッド呼び出しを使用して呼び出したい場合、ブリーズ js クエリからのデータを onservable 配列として返すにはどうすればよいですか。詳細: 関数 getAllFileStructures(callback) は、promise で監視可能な配列データを返しません。私はそよ風でクエリを呼び出して、データを取り戻したいです。getAllFileStructures に実行させたいことを紹介するために、testgetAllFileStructures を作成しました。
testgetAllFileStructures は次を返します
HTML
<script src="~/Scripts/Custom/filerepo/filestructure.DataContext.js"></script>
<script>
function load() {
var SimpleListModel2 = function () {
var DbCtx = new DataContext.FileStructure("breeze/FileRepoBreeze/");
this.items = DbCtx.testgetAllFileStructures();
//in a perfect world i would be able to change this to getAllFileStructures() and it will //just work.
}.bind(this); // Ensure that "this" is always this view model
ko.applyBindings(new SimpleListModel2(), document.getElementById("test"));
}
window.onload = load;
</script>
<div id="test">
<select multiple="multiple" data-bind="options: items"> </select>
</div>
Typescript ファイル
module DataContext {
export class FileStructure {
private EntityQuery: breeze.EntityQuery;
private Manager: breeze.EntityManager;
constructor(MainController: string) {
//validate the format api/BreezeController/
this.EntityQuery = new breeze.EntityQuery;
this.Manager = this.configureBreezeManager('breeze/FileRepoBreeze/');
}
private configureBreezeManager(MainController: string) {
breeze.NamingConvention.camelCase.setAsDefault();
return new breeze.EntityManager(MainController);
}
public getAllFileStructures(callback) {
//define the query
var query =
this.EntityQuery
.from('GetAllFiles')
.using(this.Manager).execute()
.then(function (data) {
return callback(data);
})
.fail(this.queryFailed);
}
public testgetAllFileStructures (){
var myObservableArray = ko.observableArray();
myObservableArray.push('Some TEST');
return myObservableArray;
}
public queryFailed(error) {
alert(error);
}
}
}