Knockout JS と Durandal JS を使用しています。別の Js ファイルからデータベースにクエリを実行し、viewModel Js ファイルにデータをバインドしたいと考えています。
私はindex.jsファイルを持っていて、view(index.html)にバインドされたobservableArrayとしてlistDataを含んでいます。index.js では、別のファイルapiCall.jsからデータを取得する関数を呼び出しています。apiCall.js では、データベースからリストを取得するためにgetJsonメソッドを呼び出しています。では、新しいリストを listData observableArray にバインドするにはどうすればよいでしょうか? Ajax は非同期で動作するため、他のすべてのコードは getJson 呼び出しの前に実行されます。また、return は期待どおりに機能しません。
どうすればいいですか?getJson や ajax を同じ viewModel ファイル自体 (index.js) から呼び出すと、データを簡単にプッシュできるので問題なく動作します。ajax 呼び出し専用の別のファイルを用意するのは良いことですか?
index.js
var activate = function () {
var self = this;
self.listData(apiCall.listData());
...}
apiCall.js
var listData = function () {
$.getJSON("/api/Clients", function (data) {
return data;
}
}