Angular を使用しているときに、そよ風からメタデータを取得する代替手段があるかどうかに興味があります。$q と Q の promise は互いにうまく機能しないため、$q ではなく Q.js の promise のみを使用することにしました。コントローラーで、metaDataStore が空かどうかを確認しています。
if (mainDataService.manager.metadataStore.isEmpty())
{
$log.info('metadataStore is empty') ;
mainDataService.getMetaData()
.then(function ()
{
EnableCreateButton();
});
}
メタデータがない場合の基本的な考え方は、メタデータを取得してから、新しいレコードを作成できるボタンを有効にすることです。
これを達成するために、データ サービスで Q Promise を定義し、そよ風が Promise を解決した後で、Promise を解決します。
function getMetaData()
{
var myMetaDataPromise = Q.defer();
Q.delay(0).then(function () {
manager.metadataStore.fetchMetadata(serviceName).then(function () {
myMetaDataPromise.resolve();
});
});
return myMetaDataPromise.promise;
}
このクリーナーを作るための提案は素晴らしいでしょう。私が考えていた 1 つの考えは、コントローラーで promise を定義し、データ サービスが簡単な promise を返すようにすることでした。コントローラーが乱雑になり、懸念事項が分離されないと思っただけです。